我有一个表格,上面有一些复选框类型的问题。问题的措辞是从数据库中的一个表中获取的。但是其中有HTML标记。
| ID {PK}|问题|
| --|--|
| 1 |第一个月|
| 2 |Another question with <br> HTML markup
的|
我可以毫不费力地呈现这些问题,尽管它们有HTML标记。问题发生在用户提交表单时。
@using (Html.BeginForm("SaveQuestion", "QuestionController", FormMethod.Post))
{
@for (int i = 0; i < Model.QuestionList.Count; i++)
{
@Html.HiddenFor(m => Model.QuestionList[i].ID)
@Html.HiddenFor(m => Model.QuestionList[i].Question)
<div>
@Html.CheckBoxFor(m => Model.QuestionList[i].IsDisplay)
@Html.DisplayFor(m => Model.QuestionList[i].Question)
</div>
}
<button type="submit">Save</button>
}
字符串
提交表单时,我得到以下错误。
System.Web.HttpRequestValidationException(0x 80004005):从客户端检测到有潜在危险的请求。
这个要求迫使我保存这些字符串中的标记。那么我如何避免这个错误呢?有没有一种方法可以用Unicode实现同样的效果呢?
1条答案
按热度按时间eoxn13cs1#
你可以在模型类的Question属性上使用AllowHtml属性。类似于(?我猜有一点):
字符串
您还可以在P2P控制器中的SaveQuestion方法(Action)上使用ValidateInput(false)属性,尽管这将关闭对所有字段的所有检查。
您应该知道这些检查是为了防止跨站脚本攻击(XSS)。如果您的网站是面向公众的(即使不是),您需要非常小心,如果您关闭它们,有人恶意无法输入一些东西,如脚本标记内的某些JavaScript,将以某种方式执行并造成损害。
网站上的previous answer中有关于这些方法和XSS的讨论。