带有编码文本的MVC3 TextBoxFor

Era*_*nn3 7 asp.net-mvc html-encode asp.net-mvc-3

有没有办法使用TextBoxFor帮助程序与编码文本?

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

@Html.TextBoxFor(model => model.Description)
Run Code Online (Sandbox Code Playgroud)

和model.Description的值被编码,例如:

 <script>alert();'</script>
Run Code Online (Sandbox Code Playgroud)

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

 <script>alert();'</script>
Run Code Online (Sandbox Code Playgroud)

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

@Html.TextBox("Description", Server.HtmlDecode(Model.Description))
Run Code Online (Sandbox Code Playgroud)

dkn*_*ack 5

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

使用System.Web.HttpUtility.HtmlDecode那个.

System.Web.HttpUtility.HtmlDecode("&lt;script&gt;alert();&#39;&lt;/script&gt;")
Run Code Online (Sandbox Code Playgroud)

会导致

<script>alert();'</script>
Run Code Online (Sandbox Code Playgroud)

TextBoxFor不支持这一点,你有2个选项

1.显示前解码

    @{
        Model.Description = System.Web.HttpUtility.HtmlDecode(Model.Description);
     }
    @Html.TextBoxFor(model => model.Description)
Run Code Online (Sandbox Code Playgroud)

2.使用@ Html.TextBox

    @Html.TextBox("Description", System.Web.HttpUtility.HtmlDecode(Model.Description))
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助