Я пытался следовать учебным пособиям и примерам в Интернете, таким как Блог Дэвида Хейдена и официальные ASP.Net MVC Tutorials , но я не могу ' t получить приведенный ниже код для отображения фактических ошибок проверки. Если у меня есть вид, который выглядит примерно так:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.Parent>" %>
<%-- ... content stuff ... --%>
<%= Html.ValidationSummary("Edit was unsuccessful. Correct errors and retry.") %>
<% using (Html.BeginForm()) {%>
<%-- ... "Parent" editor form stuff... --%>
<p>
<label for="Age">Age:</label>
<%= Html.TextBox("Age", Model.Age)%>
<%= Html.ValidationMessage("Age", "*")%>
</p>
<%-- etc... --%>
Для класса модели, который выглядит следующим образом:
public class Parent
{
public String FirstName { get; set; }
public String LastName { get; set; }
public int Age { get; set; }
public int Id { get; set; }
}
Всякий раз, когда я ввожу недопустимый возраст (так как возраст объявлен как целое число), например «xxx» (не целое число), представление действительно правильно отображает сообщение «Редактирование не удалось. Исправьте ошибки и повторите попытку "в верхней части экрана, а также выделив текстовое поле Age и поставьте рядом с ним красную звездочку, указывающую на ошибку. Тем не менее, список сообщений об ошибках не отображается с ValidationSummary. Когда я выполняю свою собственную проверку (например, для LastName ниже), сообщение отображается правильно, но встроенная проверка TryUpdateModel, похоже, не отображает сообщение, когда поле имеет недопустимое значение.
Вот действие, вызванное в моем коде контроллера:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditParent(int id, FormCollection collection)
{
// Get an updated version of the Parent from the repository:
Parent currentParent = theParentService.Read(id);
// Exclude database "Id" from the update:
TryUpdateModel(currentParent, null, null, new string[]{"Id"});
if (String.IsNullOrEmpty(currentParent.LastName))
ModelState.AddModelError("LastName", "Last name can't be empty.");
if (!ModelState.IsValid)
return View(currentParent);
theParentService.Update(currentParent);
return View(currentParent);
}
Что я пропустил?