3

我正在使用 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()

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

4

1 回答 1

2

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

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

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

    });
于 2013-10-02T13:45:47.933 回答