所以,我知道为什么会发生这种情况,但只是不确定解决问题的最佳方法。 我正在使用的应用程序具有ViewModel并绑定/映射模型中的属性。
然后将此VM绑定到View并使用@ Html.TextBox()帮助程序。
这是一个例子:DB的实际文本值是:
"Université de Montréal"
DOM中HTML的渲染输出是:
<input class="validate" id="EmployerName" name="EmployerName" type="text" value="Universit&#233; de Montr&#233;al" />
现在,一旦加载了页面,它就会通过序列化表单并发送它来进行AJAX GET调用。
此时,它已经命中控制器(因为我将[ValidateRequest(false)]属性应用于该控制器操作,但我得到了错误:
A potentially dangerous Request.QueryString value was detected from the client (employername="Université de Montré...").
此时,我对如何解决问题以及让请求正常处理感到困惑。 我知道通过在web.config中添加修复它,我不想在网站范围内更改它。
任何想法都是让这个请求正常处理的最佳方法吗?
控制器操作:
[ValidateInput(false)]
[OutputCache(NoStore = true, Duration = 0)]
public ActionResult GetMoreData(Criteria crit)
{
...
}
答案 0 :(得分:0)
所以,我设法解决了这个问题。
使用MVC TextBoxFor时,它会自动编码字符串(这很好)。
将[ValidateInput(false)]属性添加到控制器操作可以调用action方法。然后我简单地做了一个HtmlDecode ON SAVE。在加载时,我只是HtmlEncode字符串。
如果您向用户显示了很多属性但它可以正常工作,那么这不是最佳解决方案。