C# 如何在选择列表更改时触发远程验证
我正在使用MVC3和不引人注目的验证来检查我的表单。用户可以从列表中选择设施,并输入审核名称。设施的审核名称必须是唯一的,但每个设施都可以有一个具有相同名称的审核 模型如下所示: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
[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()
});