Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 我可以对有效数据进行ValidationMessageFor显示提示吗?_Asp.net Mvc 4_Razor - Fatal编程技术网

Asp.net mvc 4 我可以对有效数据进行ValidationMessageFor显示提示吗?

Asp.net mvc 4 我可以对有效数据进行ValidationMessageFor显示提示吗?,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我有下面的场景。表单有一些输入,其中一些输入下有提示,如“您不必填写此字段”等。现在,如果出现验证错误,我希望常规验证消息替换这些提示。当该字段再次有效时,提示不必再次出现(尽管我不介意它是否出现) 使用标准ValidationMessageFor helper可以实现这一点吗 我想我可以使用JS修补一些东西,因为我已经在监视包含类更改验证消息的元素(使用),所以我可以在验证错误时更改整个控制组的颜色 在这种情况下,我只需要根据验证错误是否可见来显示\隐藏提示。最后,我使用的解决方案如下所示。

我有下面的场景。表单有一些输入,其中一些输入下有提示,如“您不必填写此字段”等。现在,如果出现验证错误,我希望常规验证消息替换这些提示。当该字段再次有效时,提示不必再次出现(尽管我不介意它是否出现)

使用标准ValidationMessageFor helper可以实现这一点吗


我想我可以使用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);
});