显示ASP标记字符串作为ASP.NET中的HTML

时间:2015-03-06 10:10:49

标签: html asp.net tags

我试图在html中将asp下拉列表标记显示为字符串作为asp标记:

<%= HttpUtility.HtmlDecode("<asp:DropDownList ID=\"day\" runat=\"server\"></asp:DropDownList>") %>

如果我尝试将html标签显示为字符串,就像img标签一样,它会完美地显示出来, 但是使用<asp:DropDownList...>它就不会显示任何内容。

请帮助我试图解决它已经2天了。

2 个答案:

答案 0 :(得分:1)

asp.net应用程序试图阻止跨站点脚本攻击所以当我们将值直接放到UI时,我的意思是内部html包含类似于&lt; &GT;将被视为交叉脚本,因此不允许这样做。

示例:

string mystring="<asp:Button id="b1" Text="Submit" runat="server" />"

如果我们试图将此代码直接放到UI字段,那么它将不允许我们这样做

注意:我们可以在asp.net中禁用跨脚本功能,但这不是一个好主意

insted asp控件你可以使用纯HTML控件然后它会工作。

string mystring="<input type="button" id="b1" Text="Submit" runat="server" />"

注意:如果您允许用户向您的程序输入敏感信息,请始终考虑您需要阻止它的跨站点脚本攻击。

  

HttpUtility.HtmlDecode编码你的字符串

     

html编码是为了防止跨站点脚本攻击,因此它可以正常工作

注意:编码输出 如果输出包含来自用户或其他来源(如数据库)的输入,请使用HttpUtility.HtmlEncode方法对输出进行编码。 HtmlEncode替换在表示这些字符的HTML到HTML变量中具有特殊含义的字符。例如,&lt;被替换为&lt;和&#34;被替换为&#34;。编码数据不会导致浏览器执行代码。相反,数据被渲染为无害的HTML。

参考:msdn

答案 1 :(得分:0)

使用HtmlTextWriter类和RenderControl方法。

经验:

var finalHtmlTag = new StringBuilder(); 
var tempWriter= new StringWriter(finalHtmlTag ); 
var tempHtml= new HtmlTextWriter(tempWriter); 
YourConrol.RenderControl(tempHtml); 
var html = finalHtmlTag.ToString();