C# 如何在MVC视图中获取ValidationMessage,而无需HTML助手添加自己的范围?
首先,我是MVC新手。我有一个具有以下代码行的视图:C# 如何在MVC视图中获取ValidationMessage,而无需HTML助手添加自己的范围?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,首先,我是MVC新手。我有一个具有以下代码行的视图: <span id="loginerror" style="border-color:red;"> @Html.ValidationMessage("UserName") </span> @Html.ValidationMessage(“用户名”) 这工作正常,只是它在myloginerror中添加了一个范围,而不是仅在loginerror中显示错误。我知道我也可以通过HTMLHelper添加css,但如果可能的话,
<span id="loginerror" style="border-color:red;"> @Html.ValidationMessage("UserName") </span>
@Html.ValidationMessage(“用户名”)
这工作正常,只是它在my
loginerror
中添加了一个范围,而不是仅在loginerror
中显示错误。我知道我也可以通过HTMLHelper添加css,但如果可能的话,我想用这种方式添加css。我只想获得ValidationMessage的值,而不必更改很多代码。帮助程序输出一个
元素,该元素假定属性有效
<span class="field-validation-valid" data-valmsg-for="xxx" data-valmsg-replace="true"></span>
为了改变这种行为,您需要为外部
元素创建自己的HtmlHelper
扩展方法,或者使用MVC-5
,它具有允许您添加指定标记的参数的重载
但是,对于客户端验证生成的内部span元素,您需要修改jquery.validate.unobtrusive.js
文件,这显然不是您想要做的事情
例如,您可以创建自己的css文件来设置默认span元素的样式
field-validation-error {
display: inline-block;
border: solid 1px red;
color: green;
margin: 10px;
}
除非您想对jquery.validate.unobtrusive.js
文件进行大量修改,否则您不能这样做。但是你为什么认为你需要这样做呢。该插件添加了类名,因此您可以使用css设置元素的样式,以显示您想要的内容(并且助手不添加任何css,只添加类名)。@StephenMuecke我认为我不需要这样做。但我只是想知道我是否可以在不添加自己的span元素的情况下获得错误消息的值。也许它能给我更多的控制权。如果明天我想在现有的标记中显示错误消息呢?然后将@Html.ValidationMessage()
包装在
标记中。不清楚为什么您认为需要删除内部span元素。@StephenMuecke,因为我不想要多余的span?如果我必须在中显示消息,为什么我需要中的span?然后(1)编写您自己的HtmlHelper
扩展方法以输出容器占位符,(2)修改jquery.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>
field-validation-error {
display: inline-block;
border: solid 1px red;
color: green;
margin: 10px;
}