DataAnnotations для решения проблемы проверки на стороне клиента - PullRequest
0 голосов
/ 20 декабря 2010

Я пытаюсь получить, как мне кажется, простой пример использования 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>

Проверка на стороне сервера работает очень хорошо, и сообщения об ошибках проверки появляются, как и ожидалось,Тем не менее, я не получаю проверку на стороне клиента для работы.Есть ли что-то очевидное, чего мне не хватает, чтобы появилась проверка на стороне клиента?

1 Ответ

1 голос
/ 20 декабря 2010

Вы включили проверку на стороне клиента в своем файле 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;

Я рекомендую вам прочитать статью Брэда Уилсона Ненавязчивая проверка клиента в ASP.NET MVC 3

...