Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
C# 如何在选择列表更改时触发远程验证_C#_Asp.net Mvc 3_Jquery Validate_Unobtrusive Validation - Fatal编程技术网

C# 如何在选择列表更改时触发远程验证

C# 如何在选择列表更改时触发远程验证,c#,asp.net-mvc-3,jquery-validate,unobtrusive-validation,C#,Asp.net Mvc 3,Jquery Validate,Unobtrusive Validation,我正在使用MVC3和不引人注目的验证来检查我的表单。用户可以从列表中选择设施,并输入审核名称。设施的审核名称必须是唯一的,但每个设施都可以有一个具有相同名称的审核 模型如下所示: [DisplayName("Audit Name")] [Remote("CheckAuditName", "Audit", ErrorMessage = "The audit name has already been used for this Healthcare Facility", Addit

我正在使用MVC3和不引人注目的验证来检查我的表单。用户可以从列表中选择设施,并输入审核名称。设施的审核名称必须是唯一的,但每个设施都可以有一个具有相同名称的审核

模型如下所示:

    [DisplayName("Audit Name")]
    [Remote("CheckAuditName", "Audit", ErrorMessage = "The audit name has already been used for this Healthcare Facility", AdditionalFields = "HealthcareFacilitySysId")]
    public string AuditName { get; set; }

    [DisplayName("Healthcare Facility")]
    public long HealthcareFacilitySysId { get; set; }

    public IEnumerable<SelectListItem> AvailableHealthcareFacilities { get; set; }

等等,但是当我手动调用远程方法时,我无法获取表单来验证它。甚至有可能吗?

问题可能是验证中存在一些缓存。试着这样做:

 $("#HealthcareFacilitySysId").change(function () {

        $("#AuditName").removeData("previousValue"); //clear cache
        $("form").data('validator').element('#AuditName'); //retrigger remote call
        $('#AuditName').blur()

    });

$'form'。有效;对于整个表单来说就足够了。甚至$'AuditName'。有效;假设AuditName是select的id,则只适用于一个元素。@Sparky我已经尝试过了,虽然它确实验证了表单,但它忽略了需要远程验证的字段,在我的例子中,远程验证是真正重要的部分。感谢您,因为我们讨论的是JavaScript,所以您还必须显示呈现的HTML标记。但是,如果您以编程方式重新触发表单上的验证,则包括远程方法在内的所有规则也会重新计算。@CurlyPaul您对此有何了解?我对邮政编码和国家有相同的设想。
 $("#HealthcareFacilitySysId").change(function () {

        $("#AuditName").removeData("previousValue"); //clear cache
        $("form").data('validator').element('#AuditName'); //retrigger remote call
        $('#AuditName').blur()

    });