0

クライアント側の検証を ASP/NET MVC4 で動作させようとしていますが、サーバー側の属性とデータ注釈はありません。ビューで jQuery Validation プラグインを厳密に使用して実行したいと考えています。ここに私のHTMLがあります:

<form id="mainForm" method="post" action="/Department/Save">

@Html.ValidationSummary("Please correct the errors")
<label>Department Name:</label><input type="text" id="DepartmentName" name="DepartmentName"/>  
@Html.ValidationMessageFor(model => model.DepartmentName)
<br />    
<label>Department Name Fr:</label><input type="text" id="DepartmentNameFr" name="DepartmentNameFr"/>
<input type="submit" id="btnSave" value="Save" />

これが私のjQueryスクリプトです:

          $("#formWeek").validate({
          highlight: function (element, errorClass) {
              $(element).add($(element).parent()).addClass("input-validation-error");
          },
          unhighlight: function (element, errorClass) {
              $(element).add($(element).parent()).removeClass("input-validation-error");
          }
      });          

      $('#DateRangeCriteriaWeek').rules('add', {
          required: true,
          regex:"(201[3-9]|20[2-9][0-9])-(0[1-9]|[1-4][0-9]|5[0-3])", 
          messages: {
              required: "Date Range Criteria is required.",
              regex: "Date Range Criteria format is invalid."
          }
      });

最初は、エラー メッセージがポップアップすることさえありませんでした。入力を空白のままにしたとき (送信ボタンをクリックしたとき)、赤いテキスト ボックスが表示されただけでした。jQuery は自動的にエラー メッセージを表示すると思っていましたが、そうではありませんでした。しかし、Html.ValidationSummary ヘルパーを追加すると、突然エラー メッセージが表示されました。

次に、エラー メッセージが、上で定義したカスタム メッセージではなく、既定のメッセージであることに気付きました。カスタム メッセージを表示するには、上記のルール メソッドを使用する必要があることがわかりました。しかし、ユーザーがエラーを修正しても、メッセージは消えません。

レンダリングされた HTML は次のとおりです。

<form id="formWeek" method="post" data-ajax-update="#ProductsDivWeek" data-ajax-success="process('Week')" data-ajax-mode="replace" data-ajax-method="Post" data-ajax="true" action="/Dashboard/Products?Length=9" novalidate="novalidate">
<div>
    <div class="validation-summary-valid" data-valmsg-summary="true">
        <ul>
        <li style="display:none"></li>
        </ul>
    </div>
</div>
<table>
<tbody>
    <tr>
        <td>Date : </td>
        <td>
            <input id="DateRangeFilterWeek" type="hidden" value="FiscalWeek" name="DateRangeFilter">
            <span class="ui-helper-hidden-accessible" role="status" aria-live="polite"></span>
            <input id="DateRangeCriteriaWeek" class="ui-autocomplete-input" type="text" value="21/09/2013" name="DateRangeCriteria" data-val-required="Date Range Criteria is required." data-val="true" autocomplete="off">
        </td>
        <td>
        <input id="btnApplyWeek" type="submit" title="Apply" value="Apply" name="btnApply">
        </td>
    </tr>
</tbody>
</table>

4

1 に答える 1