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

本文关键字:程验证 验证 选择 列表 | 更新日期: 2023-09-27 18:28:29

我使用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; }

远程验证正在工作,我在正确的时间得到了正确的消息,但我可以这样愚弄它:

  • 选择设施1
  • 输入已用于协作室2的审核名称
  • 选择设施2
  • 提交表格

在设施列表的更改事件中,我尝试调用

$('form').validate().valid()
$('#AuditName').blur()

等等,但当我手动调用远程方法时,我无法获得验证远程方法的表单。这可能吗?

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

问题可能是验证中的一些缓存。试试这样的东西:

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