DavidHaydenのブログや公式のASP.NetMVCチュートリアルなど、Web上の検証チュートリアルと例に従おうとしていますが、実際の検証エラーを表示するための以下のコードを取得できません。次のようなビューがある場合:
<%@ 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を入力すると(Ageはintとして宣言されているため)、ビューには「編集に失敗しました。エラーを修正して再試行してください」というメッセージが画面の上部に正しく表示されます。 、および[年齢]テキストボックスを強調表示し、その横に赤いアスタリスクを付けて、エラーを示します。ただし、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);
}
私は何を取りこぼしたか?