1

MVC3 アプリケーションで入力フィールドを検証するために DataAnnotations を使用しています。正規表現の検証を使用しています。IE8 と IE9 の UI で検証メッセージが表示されます。しかし、クライアント側の検証が失敗した後でも [保存] ボタンを押すと違いに気付きます。IE9 は私をクライアント側にとどめます。ただし、IE8では、コントロールはコントローラーアクションに移動し、検証がエラーになるようにコントローラー側のTryValidateModelが必要です。

IE8がサーバーラウンドトリップを行っている理由を知っている人はいますか?

編集:コードを追加します。これは cshtml に入ります。

    @using (Html.BeginForm("Person", "Account", FormMethod.Post))
    {
       <span class="resultError" id="resultError">
       @Html.ValidationMessageFor(model => model.Name, "Name should not contain special characters")  
       </span>
       <table>
         <tr>
          <td class="editor-label">Name:
          </td>
          <td class="editor-field">@Html.EditorFor(model => model.Name)
          </td>
        </tr>
       </table>
       <input type="submit" name="btnKey" value="Save" />
    }

これは DataAnnotation を使用した部分クラスです。Person クラスは EF によって駆動されます。そのため、検証を行うためのメタデータ クラスを作成する必要があります。

    [MetadataType(typeof(personMetadata))]
    public partial class person: EntityObject
    {
      public class personMetadata
      {
        [Required]
        [RegularExpression(@"[A-Za-z0-9]+")]       
        public object Name { get; set; }
      }
    }

編集:参照されているJavaScriptファイルを追加します。「~/Scripts/jquery.validate.min.js」「~/Scripts/jquery.validate.unobtrusive.min.js」

4

1 に答える 1

4

私の場合は、あなたの場合とよく似ていますが、jquery.validate.js を更新することが最善の方法であることがわかりました。IE 7、8、および 9 に関する jquery 検証のバージョン 1.8.0 にバグが報告されています。

最新バージョンを取得した後、すべてが機能し始めました。

于 2011-06-22T01:27:53.380 に答える