如何在没有HTML帮助器添加自己的跨度的情况下在MVC View中获取ValidationMessage?

时间:2016-02-23 09:50:41

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

首先,我是MVC的新手。我有一个视图,其中包含以下代码行:

<span id="loginerror" style="border-color:red;"> @Html.ValidationMessage("UserName") </span>

这项工作正常,只是它在我的loginerror中添加了一个范围,而不是仅在loginerror中显示错误。我知道我也可以通过html帮助器添加css,但如果可能的话我想以这种方式做到这一点。我只想获得ValidationMessage的值,而不必更改大量代码。

1 个答案:

答案 0 :(得分:1)

@Html.ValidationMessage()助手输出一个<span>元素,假设该属性有效

<span class="field-validation-valid" data-valmsg-for="xxx" data-valmsg-replace="true"></span>

如果属性无效

<span class="field-validation-error" data-valmsg-for="xxx" data-valmsg-replace="true">Error message</span>

对于客户端验证,jquery.validate.jsjquery.validate.unobtrusive.js文件为错误消息添加内部范围

<span class="field-validation-error" data-valmsg-for="xxx" data-valmsg-replace="true">
    <span for="xxx" generated="true" class="">Error message</span>
</span>

要更改此行为,您需要为外部HtmlHelper元素创建自己的<span>扩展方法,或使用具有重载的MVC-5,以便添加参数指定tag

但是,对于客户端验证生成的内部span元素,您需要修改jquery.validate.unobtrusive.js文件,显然这不是您想要做的事情。

相反,您可以创建自己的css文件来设置默认范围元素的样式,例如

field-validation-error {
    display: inline-block;
    border: solid 1px red;
    color: green;
    margin: 10px;
}