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

时间:2013-08-20 11:05:19

标签: 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", AdditionalFields = "HealthcareFacilitySysId")]
    public string AuditName { get; set; }

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

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

远程验证工作正常,我在正确的时间得到了正确的信息,但我可以这样欺骗它:

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

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

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

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

1 个答案:

答案 0 :(得分:2)

问题可能是验证的一些缓存。尝试这样的事情:

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

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

    });