1

我正在使用 DataAnnotations 来验证 MVC3 应用程序上的输入字段。我正在使用正则表达式验证。我在 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 回答