HttpUtility.HtmlEncode()在asp.net TextBox控件中不起作用?

时间:2013-07-05 17:37:41

标签: asp.net

我的代码如下:

Test.aspx文件:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <input type="text" value="<%=HttpUtility.HtmlEncode(ab)%>" runat="server"/>
    </form>
</body>
</html>

test.cs中:

 public partial class Test: System.Web.UI.Page
    {
       public string ab;
        protected void Page_Load(object sender, EventArgs e)
        {
             ab = "<script>alert('111');</script>";
        }
    }

运行test.aspx页面后,文本框值为<%=HttpUtility.HtmlEncode(ab)%>

但删除runat="server"字符串显示正确!

1 个答案:

答案 0 :(得分:2)

当您在控件上执行runat="server"时,它将成为服务器控件而不是传统的HTML标记,因此属性将在服务器上处理。不幸的是,这意味着内联脚本标记并不总是按照您希望的方式执行。

你可以做一些事情。要么像你说的那样离开runat="server",这样就可以完全按照你想要的方式渲染,或者在代码中设置值:

myTextBox.Value = "whatever";

你也可以使用数据绑定,但它有点难看:

<input id="myTextBox" runat="server" type="text"
    value='<%# HttpUtility.HtmlEncode("someString") %>' />

protected void Page_Load(object sender, EventArgs e) {
    myTextBox.DataBind();
}