2010-02-08 62 views
0

如何在服务器端脚本中以编程方式显示asp控件(最好是asp:table)中的html文档?我目前使用Streamrader打开html文档,将其读入一个字符串,然后将其放入表格中,但出现所有的html标记。我尝试使用HtmlEncode和HtmlDecode,但无法使其工作。所以我有访问控制工作的机制,只需要呈现HTML文档,因为它会出现在浏览器中。如何在asp控件中显示html文档

+0

这是不是Asp.NET? – Phil 2010-02-08 20:00:20

回答

1

你需要设置一些控制的“.InnerHtml”属性,而不是“.InnerText”或者是类似的东西(HtmlCell?):

LiteralControl foo = new LiteralControl("<p>html from stream here</p>") 
table.Rows[0].Cells[0].Controls.Add(foo); 

这将有助于如果你能提供一些背景(一个小代码示例),当你把html“放到表中”的时候,你究竟想做什么。

+0

解决:我删除了HtmlEncode – 2010-02-08 21:10:58

+0

行,整个StringWriter业务是多余的:如果你已经把它作为GetArticle()的字符串,你可以直接把它放到InnerHtml中。 – Ope 2010-02-08 21:35:00

0

这里是我当前的代码:

//articleComments in code snippet is the raw html file contents 

protected void DisplayArticle(string articleID) 
    {  
     string articleContents = GetArticle(articleID); 
     System.IO.StringWriter sw=new System.IO.StringWriter(); 
     Server.HtmlEncode(articleContents, sw); 
     Server.HtmlDecode(articleContents, sw); 
     HtmlTableRow row = new HtmlTableRow(); 
     HtmlTableCell cell = new HtmlTableCell(); 
     this.tablearticle.Border = 0; 
     this.tablearticle.Rows.Add(row); 
     row.Attributes.Add("bgcolor", "lightgrey"); 
     row.Attributes.Add("align", "center"); 
     cell.InnerHtml = sw.ToString(); 
     row.Cells.Add(cell); 
    }