2011-12-06 27 views
7

有没有办法使用TextBoxFor助手与编码文本?MVC3 TextBoxFor带有编码文本

例如: 当使用MVC3下列辅助剃刀视图引擎:

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

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

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

结果文本框中的编码字符串, 当通缉的结果是带有解码字符串的文本框时:

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

是否有使用MVC TextBoxFor与编码字符串,而不是使用

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

的方法吗?

+1

它看起来像你对我可能是在编码东西的地方。为什么数据库中编码的内容?一般来说,它不应该是:在显示的时候应该编码,以防止注射。在编辑时存储和解码时编码充满了错误和复杂性。 –

+0

我说你是对的,但在数据被保存到编码数据库的情况下很好知道。我猜测,与@ html.TextBox的另一种方法是现在最好的解决方案。 – Erann3

回答

5

你必须html解码你的字符串。使用System.Web.HttpUtility.HtmlDecode

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

将导致

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

TextBoxFor不支持的话,你有两个选择

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)) 

希望这有助于

+0

感谢您的回复,但这两个选项与我所建议的并无太大区别,现在就探索最接近的解决方案。 – Erann3