ModelState.AddModelError对HTML进行编码

时间:2009-04-07 19:03:51

标签: asp.net-mvc validation

使用ModelState.AddModelError验证表单上的输入时,我注意到一个奇怪的问题。 Html.ValidationMessage的输出不是真正的HTML值,而是编码值,因此CSS样式不会应用于错误消息。

示例:

private string errorMessage = "<span class=\"negative\">{0}</span><br class=\"hid\" />";
ModelState.AddModelError("title", String.Format(errorMessage, "Tab title is required"));

输出显示为:

<span class="field-validation-error">&lt;span class=&quot;negative&quot;&gt;URL is Required&lt;/span&gt;&lt;br class=&quot;hid&quot; /&gt;</span>

这与他们之前的测试版没有用,我不知道采取什么方法。

由于 尼克

2 个答案:

答案 0 :(得分:14)

还有另一种方法可以做到这一点,而无需创建自己的扩展。

比如我们在一个控制器中有以下内容:

ModelState.AddModelError("Name", "<b>Please Use a Valid Person Name</b>");

我们可以在视图中执行以下操作:

@if(Html.ValidationMessageFor(x => x.Name) != null){
    @Html.Raw(Html.ValidationMessageFor(x => x.Name).ToString())
}

将阻止'<b>Please Use a Valid Person Name</b>'的错误消息被编码。

答案 1 :(得分:1)

创建自己的扩展方法,模仿Html.VallidationMessage ......?

我必须做类似的事情,因为内置的MVC验证内容(ModelState,ValidationMessage等等)不适合页面上有多个表单的页面。