【问题标题】:DataAnnotations driving client side validation issueDataAnnotations 驱动客户端验证问题
【发布时间】:2010-12-20 08:07:47
【问题描述】:

我正在尝试获得一个我认为在模型上使用 DataAnnotations 来驱动客户端验证的简单示例。

这是我的模型...

 public class Person
 {
  [Required(ErrorMessage = "First Name Required")]
  public string FirstName { get; set; }
  [Required(ErrorMessage = "Last Name Required")]
  public string LastName { get; set; }
 }

这是我的控制器...

 public class FriendsController : Controller
 {
  public ActionResult Create()
  {
   Person newFriend = new Person();
   return View(newFriend);
  }

  [HttpPost]
  public ActionResult Create(Person friendToCreate)
  {
   if (ModelState.IsValid)
   {
    // todo -- do something here
    return Redirect("/");
   }

   // Invalid - redisplay form with errors
   return View(friendToCreate);
  }
 }

这是我的看法……

@model MvcApplication4.Models.Person
<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")" type="text/javascript"></script>
</head>
<body>
    <h2>
        Create</h2>
    @{Html.EnableClientValidation();}
    @using (Html.BeginForm())
    { 
        <fieldset>
            <p>
                @Html.LabelFor(m => m.FirstName)
                @Html.TextBoxFor(m => m.FirstName)
                @Html.ValidationMessageFor(m => m.FirstName)
            </p>
            <p>
                @Html.LabelFor(m => m.LastName)
                @Html.TextBoxFor(m => m.LastName)
                @Html.ValidationMessageFor(m => m.LastName)
            </p>
            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>
    }
</body>
</html>

服务器端验证工作正常,验证错误消息按预期显示。但是,我没有让客户端验证工作。是否有一些明显的东西我缺少让客户端验证出现?

【问题讨论】:

    标签: asp.net-mvc validation data-annotations asp.net-mvc-3


    【解决方案1】:

    您是否在 web.config 文件中启用了客户端验证?

    您可以直接在 web.config 文件中的 appSetting 部分添加几个标志

    <configuration>
        <appSettings>
            <add key="ClientValidationEnabled" value="true"/>
            <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
        </appSettings>
    </configuration>
    

    或者你可以使用纯 c# 代码来实现

    HtmlHelper.ClientValidationEnabled = true;
    HtmlHelper.UnobtrusiveJavaScriptEnabled = true;
    

    我推荐你阅读 Brad Wilson 的文章Unobtrusive Client Validation in ASP.NET MVC 3

    【讨论】:

    • 感谢您的快速回答。我刚刚阅读了布拉德的文章,感谢您的链接。他描述了我遇到的确切问题。事实证明,如果我从上面删除 MS 脚本,而是包含 jquery.validate.js 和 jquery.validate.unobtrusive.js,那么客户端验证就可以正常工作了!对于 MVC3,MS 特定的东西似乎正在让位于 JSON 实现。很高兴看到 MS 正朝着这个方向发展,而不是试图自己吃掉整个苹果。
    猜你喜欢
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多