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