Я работаю над своим самым первым проектом ASP.NET MVC и вижу странное поведение при возврате данных из представления редактирования в действие моего контроллера.
Прямо сейчас у меня есть 3 текстовых поля на странице плюс одно скрытое для PKey. Все они корректно заполняются из данных представления, но когда я отправляю форму, в возвращенной модели отображаются только 2 из 3 полей. Однако все три поля правильно заполнены в объекте запроса.
Я, вероятно, не очень хорошо это объясняю, но вот некоторые подходящие фрагменты кода, которые, надеюсь, лучше объяснить:
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» и «Year» возвращаются просто отлично, но «Title» всегда возвращается пустым. Я убедился, что все они написаны правильно везде.
Я уверен, что делаю что-то явно неправильное, но я этого не вижу. Многочисленные примеры, которые я изучал, не помогают, и большинство из них показывают функциональность «Добавить» вместо «Правка».
Заранее спасибо за любую помощь.