我试图在html中将asp下拉列表标记显示为字符串作为asp标记:
<%= HttpUtility.HtmlDecode("<asp:DropDownList ID=\"day\" runat=\"server\"></asp:DropDownList>") %>
如果我尝试将html标签显示为字符串,就像img标签一样,它会完美地显示出来,
但是使用<asp:DropDownList...>
它就不会显示任何内容。
请帮助我试图解决它已经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();