2010-06-07 2 views
6

HtmlTextWriter의 RenderBeginTag, RenderEndTag & AddAttribute 메서드를 사용하여 코드를 통해 img 태그를 만드는 타사 도구가 있습니다. 결과 HTML을 문자열로 가져 오려고합니다. here 언급 된 반사 방법을 시도했지만 "System.IO.StringWriter"를 입력하기 위해 'System.Web.HttpWriter'형식의 개체를 캐스팅 할 수 없습니다.라는 오류가 발생합니다. HtmlTextWriter의 InnerWriter 유형은 HttpWriter 유형입니다.HtmlTextWriter의 내용을 문자열로 변환

출력 HTML을 문자열로 복사하는 방법에 대한 아이디어가 있으십니까?

추가 : 타사 컨트롤에서 코드

protected override void Render(HtmlTextWriter output) 
    { 
    ..... 
    output.AddAttribute(HtmlTextWriterAttribute.Src, src); 
    output.RenderBeginTag(HtmlTextWriterTag.Img); 
    output.RenderEndTag(); 
       <-- What is the HTML now? Maybe look in OnPreRenderComplete event? 

    } 
+0

'HtmlTextWriter'의 출처는 무엇입니까? – SLaks

+0

타사 컨트롤의 재정의 된 렌더 이벤트로 전달됩니다. –

답변

9
StringWriter w = new StringWriter(); 
HtmlTextWriter h = new HtmlTextWriter(w); 

ctl.RenderControl(h); 

return w.ToString(); 

물론, 제대로 연결을 닫습니다 얻었다. 그러나 대략 이것입니다. 유닛 테스트를 위해이 작업을 수행 했었지만 지금은 정확한 코드가 나와 있지 않습니다.

HTH.

+0

컨트롤이 없습니다. 그것은 단지 코드로 만든 img 태그입니다. HttpWriter를 사용하는 기존 HtmlTextWriter에서 시작하는 솔루션 찾기 –

+0

그러면 HttpWriter 또는 HtmlTextWriter로 작업하는 방법에 대한 몇 가지 코드를 게시하여 더 잘 조언 할 수 있습니까? –

+0

질문에 대한 나의 추가 내용을보십시오. –

3

이 당신을 위해 작동합니다 :

 output.AddAttribute(HtmlTextWriterAttribute.Src, src); 
     output.RenderBeginTag(HtmlTextWriterTag.Img); 
     output.RenderEndTag(); 

     string html = output.InnerWriter.ToString(); 

희망이 도움이됩니다.

+6

이것은 HttpWriter 인 유형을 보유합니다. –

+1

흠 ... 그것은 나를 위해 아주 잘 작동합니다. http://img405.imageshack.us/img405/1568/57208217.png – philipproplesch

+0

HtmlWriter yourserlf를 만들고 StringWriter를 전달한 경우에만 작동합니다. 여기서 StringWriter.ToString()을 호출합니다. –