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

    });

09-06 01:46