带有编码文本的MVC3 TextBoxFor

时间:2011-12-06 15:19:08

标签: asp.net-mvc asp.net-mvc-3 html-encode

有没有办法将TextBoxFor helper与编码文本一起使用?

例如: 当使用以下MVC3的帮助器和Razor视图引擎时:

@Html.TextBoxFor(model => model.Description)

并且对model.Description的值进行编码,例如:

 <script>alert();'</script>

结果是带有编码字符串的文本框, 当想要的结果是带有解码字符串的文本框时:

 <script>alert();'</script>

有没有办法将MVC TextBoxFor与编码字符串一起使用而不是使用

@Html.TextBox("Description", Server.HtmlDecode(Model.Description))

1 个答案:

答案 0 :(得分:5)

你必须对你的字符串进行html解码。

使用System.Web.HttpUtility.HtmlDecode

System.Web.HttpUtility.HtmlDecode("&lt;script&gt;alert();&#39;&lt;/script&gt;")

将导致

<script>alert();'</script>

TextBoxFor不支持,因此您有2个选项

<强> 1。显示前解码

    @{
        Model.Description = System.Web.HttpUtility.HtmlDecode(Model.Description);
     }
    @Html.TextBoxFor(model => model.Description)

<强> 2。使用@ Html.TextBox进行此

    @Html.TextBox("Description", System.Web.HttpUtility.HtmlDecode(Model.Description))

希望这会有所帮助