代码之家  ›  专栏  ›  技术社区  ›  IEnumerator

modelstate.addmodelerror编码HTML

  •  14
  • IEnumerator  · 技术社区  · 17 年前

    使用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 回复  |  直到 10 年前
        1
  •  14
  •   Softlion    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>' 不会被编码。

        2
  •  1
  •   Charlino    17 年前

    创建自己的扩展方法来模仿html.vallidationmessage…?

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