在文本框上手动设置不显眼的验证错误

Sha*_*ean 20 asp.net-mvc jquery jquery-validate unobtrusive-validation asp.net-mvc-3

我正在做类似于远程验证的事情,除了我已经通过jquery手动拨打我的电话并设置我必须设置的任何内容.

现在我的问题是,如果我想告诉验证器特定文本框无效(并阻止页面提交,突出显示文本框等).我怎么从代码中做到这一点?

@Html.LabelFor(m => Model.Slug)
@Html.TextBoxFor(m => Model.Slug)
<span id="UrlMsg" class="field-validation-error" style="display: none;"></span>

 if (error) {
        $('#UrlMsg').html('This name is already in use.').fadeIn('fast');
        //what should I do here for the rest of the validation?
 }
Run Code Online (Sandbox Code Playgroud)

Ski*_*ris 50

首先,您可以添加验证摘要:

@Html.ValidationMessageFor(m => m.Slug)
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用.showError方法手动触发jQuery验证/不显眼验证.这是一个示例:

var errorArray = {};
errorArray["Slug"] = 'Some error message for the Slug text box';
$('#SomeFormId').validate().showErrors(errorArray);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的伴侣,这正是我所需要的,就像一个魅力! (2认同)
  • 但是如果像$('#SomeFormId')= true那样手动添加错误,表单是有效的吗? (2认同)

FRL*_*FRL 5

你也可以这样做:

@Html.ValidationMessageFor(m => m.Slug)
Run Code Online (Sandbox Code Playgroud)

在您的代码中使用此功能:

function setError(id, message) {
        var span = $("span[data-valmsg-for=\"" + id + "\"]");
        if (span && span.length > 0) {
            $(span).html(message);
            if (message && message != "") {
                $(span).removeClass("field-validation-valid");
                $(span).addClass("field-validation-no-valid");
            } else {
                $(span).removeClass("field-validation-no-valid");
                $(span).addClass("field-validation-valid");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后可以设置错误

setError("Slug", "errorMsg");
Run Code Online (Sandbox Code Playgroud)