私は最初の ASP.NET MVC プロジェクトに取り組んでおり、編集ビューからコントローラー アクションにデータを返すときに奇妙な動作が見られます。
現在、ページに 3 つのテキスト ボックスと、PKey 用の非表示のテキスト ボックスが 1 つあります。ビューデータからすべてが正しく取り込まれていますが、フォームを送信すると、3 つのフィールドのうち 2 つだけが返されたモデルに表示されます。ただし、3 つのフィールドはすべて Request オブジェクトに正しく設定されています。
私はおそらくそれをうまく説明していませんが、うまく説明できるように、関連するコードの抜粋をいくつか示します。
public ActionResult Edit(System.Guid Id)
{
SetBase sb = setBaseRepository.Get(Id);
return View("Edit", sb );
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(SetBase setBase)
{
//if (setBase.Title.Trim().Length == 0)
//{
// ModelState.AddModelError("Title", "Title is required.");
//}
if (setBase.Year.Trim().Length == 0)
{
ModelState.AddModelError("Year", "Year is required.");
}
if (!ModelState.IsValid)
{
return View("Edit", setBase);
}
setBaseRepository.SaveOrUpdate(setBase);
return View();
}
ビュー自体の「肉」は次のとおりです。
<viewdata model="CardTracker.Core.SetBase">
<content name="MainContent">
<% MvcForm form = Html.BeginForm("Edit", "SetBase", Model.Id); %>
<%=Html.ValidationSummary("Update was unsuccessful. Please correct the errors and try again.", new { class = "dataEntryError" })%>
<fieldset>
<legend class="dataEntry">Edit Set Base</legend>
<div>
!{Html.Hidden("Id")}
<label class="dataEntry" for="Title" >Title: </label> ${Html.TextBox("Title", Model.Title, new { class = "dataEntryLong" })}
<%=Html.ValidationMessage("Title", "***", new { class = "dataEntryError" })%>
</br>
<label class="dataEntry" for="Year">Year:</label>${Html.TextBox("Year", null, new { class = "dataEntryNumber" })}
<%=Html.ValidationMessage("Year", "***", new { class = "dataEntryError" })%>
</br>
</div>
<input type="submit" value="Update" class="button" />
</fieldset>
<% form.EndForm(); %>
</content>
「ID」フィールドと「年」フィールドは問題なく返されますが、「タイトル」は常に空白になります。私は、それらのすべてのスペルがどこでも正しいことを確認しました。
私は明らかに間違ったことをしていると確信していますが、それはわかりません。私が調査した多くの例は役に立たず、それらのほとんどは編集ではなく追加機能を示しています。
あらゆる助けを前もって感謝します。