目前我有一个定制属于这样的类的自定义属性:
[PropertiesMustMatch("Password", "PasswordConfirm", ErrorMessage = "Passwords must match!")]
问题是,只显示验证摘要,并且不突出显示不正确的文本框。有没有办法做到这一点?
答案 0 :(得分:0)
模型级验证意味着默认的Mvc活页夹不知道您要验证的属性。
Asp.net Mvc没有内置支持在该验证器的视图上显示模型级错误和突出显示属性。
我可能会做这样的事情来实现视觉效果
<%var passwordCssClass = ViewData.ModelState["Key"] != null && ViewData.ModelState["Key"].Errors.Any() ? "model-error" : string.Empty; %>
<%= Html.PasswordFor(x => x.Password, new { @class = passwordCssClass })%>
<%= Html.PasswordFor(x => x.PasswordConfirm, new { @class = passwordCssClass })%>
您必须检查ModelState以获取ModelBinder用于模型级验证错误的键。将上面的“Key”替换为您找到的内容,然后将css类更改为您的错误css类可能。
这不是生产级代码,您需要调整Any()并确保它是您正在寻找的正确错误消息,甚至可能在控制器中移动逻辑并为CssClass提供视图应该通过你的模型使用。但它应该会让你前进。