Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
JQuery远程验证程序总是返回false_Jquery_Asp.net Mvc 3_Validation_Jquery Validate - Fatal编程技术网

JQuery远程验证程序总是返回false

JQuery远程验证程序总是返回false,jquery,asp.net-mvc-3,validation,jquery-validate,Jquery,Asp.net Mvc 3,Validation,Jquery Validate,我有一个带有ZipCode字段的页面,我需要在服务器上验证它。 加载页面时,ZipCode必须已从某个外部源预填充 为了验证此字段,我添加了jquery远程验证程序: $(文档).ready(函数(){ $("#Buyer_ZipCode").rules("add", { remote: { url: zipcodeValidationUrl, async: false }, messages: { re

我有一个带有ZipCode字段的页面,我需要在服务器上验证它。 加载页面时,ZipCode必须已从某个外部源预填充

为了验证此字段,我添加了jquery远程验证程序: $(文档).ready(函数(){

    $("#Buyer_ZipCode").rules("add", {
        remote: { url: zipcodeValidationUrl, async: false },
        messages:
           {
               remote: "Cannot determine location for given zip code."
           }
    });

    var zipcode = $("#Buyer_ZipCode");
    if (zipcode.val().length > 0) {
        zipcode.trigger('blur');
    };

});
为了在页面加载后立即执行操作,我添加了一个模糊触发器。我的模糊处理程序:

$("#Buyer_ZipCode").bind('blur', function (e) {       

    //some actions

    element = $(e.target);        
    if (!element.valid()) {
        console.log(element.val());
        // Invalidate lookup target control.
        targetCity.get(0).value = "";
        targetState.get(0).value = "";
        return;
    };

 // yet some actions

});
一切正常,除了加载页面时,我们已经有了ZipCode字段的值。在这种情况下,valid()方法总是返回false,但是远程validion不是异步的,服务器真正返回true。顺便说一下,这是我的验证控制器

 public JsonResult IsZipCodeValid([NestedFieldModelBinder]string Buyer_ZipCode)
    {
        if (Utils.GetZipcode(Buyer_ZipCode) != null)
        {
            return Json(true, JsonRequestBehavior.AllowGet);
        }

        return Json("Cannot determine location for given zip code.", JsonRequestBehavior.AllowGet);
    }

我做错了什么?

你会发现使用这个工具更简单、更干净

在viewmodel中,将Remote[]属性添加到Buyer_ZipCode属性

[Remote("ValidateZipCode", HttpMethod="Post", ErrorMessage = "Cannot determine location for given zip code.")]
public string Buyer_ZipCode{ get; set; }
以及您的验证操作:

[HttpPost]
public ActionResult ValidateZipCode(string Buyer_ZipCode)
{
    // do your validation
    return Json(true);
}

关于

您会发现使用

在viewmodel中,将Remote[]属性添加到Buyer_ZipCode属性

[Remote("ValidateZipCode", HttpMethod="Post", ErrorMessage = "Cannot determine location for given zip code.")]
public string Buyer_ZipCode{ get; set; }
以及您的验证操作:

[HttpPost]
public ActionResult ValidateZipCode(string Buyer_ZipCode)
{
    // do your validation
    return Json(true);
}

关于

Small addition。当输入的zipcode未通过服务器验证时,我会看到错误消息,但当它通过-only jquery.valid(0)时,方法返回false,但没有任何消息Small addition。当输入的zipcode未通过服务器验证时,我会看到错误消息,但当它通过-only jquery.valid时,我会看到错误消息(0方法返回false,但没有任何消息感谢您的回答。我选择jquery Remote验证代替远程属性的原因是可以在同步请求中进行jquery Remote。感谢您的回答。我选择jquery验证代替远程属性的原因是可以在同步请求中进行jquery Remote验证这是我的要求。