Jquery 如何在不提交表单的情况下进行客户端远程验证?

Jquery 如何在不提交表单的情况下进行客户端远程验证?,jquery,asp.net-mvc,validation,Jquery,Asp.net Mvc,Validation,实际上,我有一个使用viewmodel的MVC.Net表单,其中的字段具有Required和Remote属性。客户端验证对于所需的部分非常有效。。。但这与我对遥控器的预期不同 问题是,在表单验证一次之前,我无法进行远程验证: Name字段由现有用户名填充-不会显示错误,因为没有对服务器进行调用 我验证了表单,进行了一个ajax调用以检查用户名的有效性,并显示了一条错误消息 现在,每次我在username字段中键入内容时,都会进行ajax调用,并相应地更新错误消息 模型如下: public c

实际上,我有一个使用viewmodel的MVC.Net表单,其中的字段具有
Required
Remote
属性。客户端验证对于
所需的
部分非常有效。。。但这与我对
遥控器的预期不同

问题是,在表单验证一次之前,我无法进行
远程
验证:

  • Name字段由现有用户名填充-不会显示错误,因为没有对服务器进行调用
  • 我验证了表单,进行了一个ajax调用以检查用户名的有效性,并显示了一条错误消息
  • 现在,每次我在username字段中键入内容时,都会进行ajax调用,并相应地更新错误消息
模型如下:

public class TestModel
{
    [Required(ErrorMessage = "Name is Required")]
    [MinLength(3)]
    [Remote("CheckUserName", "CSValidationTest")]
    public string Name { get; set; }
}
观点:

@model TestModel
@{
    ViewBag.Title = "Index";
}

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Employee</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

@section scripts
{
    <script src="~/Scripts/jquery.validate.js" type="text/javascript"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
}
另外,我不能删除
Required
属性,因为javascript可以被禁用或调整,使用
ModelState.IsValid
非常方便


有没有办法在第一次提交前调用远程规则?

请确保您已在
webconfig
文件中启用了这两个规则

<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings>   


如果需要,请使用JQuery验证函数。我将与您共享代码。@laxmanite“JQuery验证函数”是什么意思?在提交表单之前,请在任何事件上尝试这种类型的代码:function isvalid(){if($(“#DrpTest option:selected”).val()==”{return请选择Test。“+”

\n;}否则{return“”}我看不出这对我的远程验证有什么帮助。当您键入文本时,远程验证正在工作,对吗?正如我所写的,“客户端验证对于所需的部分非常有效”。客户端验证工作得很好,我实际上想改变它的行为:)您已经将MinLength指定为3,一旦每个按键请求的name值达到MinLength,就会转到CheckUserName()方法。
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings>