Asp.net mvc 4 我可以对有效数据进行ValidationMessageFor显示提示吗?
我有下面的场景。表单有一些输入,其中一些输入下有提示,如“您不必填写此字段”等。现在,如果出现验证错误,我希望常规验证消息替换这些提示。当该字段再次有效时,提示不必再次出现(尽管我不介意它是否出现) 使用标准ValidationMessageFor helper可以实现这一点吗Asp.net mvc 4 我可以对有效数据进行ValidationMessageFor显示提示吗?,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我有下面的场景。表单有一些输入,其中一些输入下有提示,如“您不必填写此字段”等。现在,如果出现验证错误,我希望常规验证消息替换这些提示。当该字段再次有效时,提示不必再次出现(尽管我不介意它是否出现) 使用标准ValidationMessageFor helper可以实现这一点吗 我想我可以使用JS修补一些东西,因为我已经在监视包含类更改验证消息的元素(使用),所以我可以在验证错误时更改整个控制组的颜色 在这种情况下,我只需要根据验证错误是否可见来显示\隐藏提示。最后,我使用的解决方案如下所示。
我想我可以使用JS修补一些东西,因为我已经在监视包含类更改验证消息的元素(使用),所以我可以在验证错误时更改整个控制组的颜色
在这种情况下,我只需要根据验证错误是否可见来显示\隐藏提示。最后,我使用的解决方案如下所示。我将每个输入与验证消息一起封装在一个“控制组”div中。然后使用attrchange监视验证范围的更改 鉴于:
<div class="control-group">
@Html.TextBoxFor(model => model.Something)
<p class="help-block">This is a hint.</p>
@Html.ValidationMessageFor(model => model.Something)
</div>
在JS中:
function UpdateControlGroupErrorState(valmsg) {
valmsg = $(valmsg);
var controlGroup = valmsg.closest('.control-group');
if (controlGroup.find('.field-validation-error').length > 0) {
if (!controlGroup.hasClass("error")) {
controlGroup.addClass("error");
}
}
else {
if (controlGroup.hasClass("error")) {
controlGroup.removeClass("error");
}
}
}
function SetupGroupValidate(validators) {
validators.each(function () {
UpdateControlGroupErrorState(this);
$(this).attrchange({
trackValues: true,
callback: function (e) {
if (e.attributeName == "class") {
UpdateControlGroupErrorState(this);
}
}
});
});
}
$(function () {
var validators = $('.control-group span[data-valmsg-for]');
SetupGroupValidate(validators);
});
function UpdateControlGroupErrorState(valmsg) {
valmsg = $(valmsg);
var controlGroup = valmsg.closest('.control-group');
if (controlGroup.find('.field-validation-error').length > 0) {
if (!controlGroup.hasClass("error")) {
controlGroup.addClass("error");
}
}
else {
if (controlGroup.hasClass("error")) {
controlGroup.removeClass("error");
}
}
}
function SetupGroupValidate(validators) {
validators.each(function () {
UpdateControlGroupErrorState(this);
$(this).attrchange({
trackValues: true,
callback: function (e) {
if (e.attributeName == "class") {
UpdateControlGroupErrorState(this);
}
}
});
});
}
$(function () {
var validators = $('.control-group span[data-valmsg-for]');
SetupGroupValidate(validators);
});