2010-06-07 36 views
6

Tôi có công cụ của bên thứ ba tạo thẻ img thông qua mã bằng phương thức RenderBeginTag của HtmlTextWriter, RenderEndTag & AddAttribute. Tôi muốn nhận được kết quả HTML thành một chuỗi. Tôi đã thử phương pháp phản chiếu được đề cập here nhưng tôi gặp lỗi "Không thể truyền đối tượng thuộc loại 'System.Web.HttpWriter' để nhập 'System.IO.StringWriter". Loại InnerWriter của HtmlTextWriter thuộc loại HttpWriter.Chuyển đổi nội dung của HtmlTextWriter thành một chuỗi

Bất kỳ ý tưởng nào về cách sao chép html đầu ra thành chuỗi?

Addition: mã từ kiểm soát của bên thứ ba

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' đến từ đâu? – SLaks

+0

Nó được chuyển đến sự kiện hiển thị đã ghi đè của kiểm soát của bên thứ ba. –

Trả lời

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

ctl.RenderControl(h); 

return w.ToString(); 

Rõ ràng, bạn phải đóng các kết nối đúng cách. Nhưng nó gần như thế này; Tôi đã làm điều này để thử nghiệm đơn vị, nhưng tôi xin lỗi, tôi không có mã chính xác trước mặt tôi vào lúc này.

HTH.

+0

Tôi không có bất kỳ điều khiển nào. Nó chỉ là một thẻ img được tạo ra trong mã. Tìm kiếm giải pháp bắt đầu từ một HtmlTextWriter hiện có trong đó sử dụng một HttpWriter. –

+0

Ok, sau đó, bạn có thể đăng một số mã như thế nào bạn đang làm việc với HttpWriter hoặc HtmlTextWriter, vì vậy tôi có thể tư vấn tốt hơn? –

+0

Xem phần bổ sung của tôi trong câu hỏi. –

3

này nên làm việc cho bạn:

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

     string html = output.InnerWriter.ToString(); 

Hope this helps.

+6

Điều này sẽ giữ loại đó là HttpWriter. –

+1

Hmm ... nó hoạt động khá tốt cho tôi. http://img405.imageshack.us/img405/1568/57208217.png – philipproplesch

+0

Điều này chỉ hoạt động nếu bạn đã tạo HtmlWriter yourserlf và truyền StringWriter cho nó. Ở đây bạn đang gọi StringWriter.ToString(). –

Các vấn đề liên quan