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 に答える