我正在处理我的第一个 ASP.NET MVC 项目,当将数据从编辑视图返回到我的控制器操作时,我看到了奇怪的行为。
现在,我在页面上有 3 个文本框,还有一个用于 PKey 的隐藏文本框。所有都是从视图数据中正确填充的,但是当我提交表单时,返回的模型中只有 3 个字段中的 2 个出现。但是,请求对象中的所有三个字段都已正确填充。
我可能没有很好地解释它,但这里有一些相关的代码片段,希望能更好地解释:
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' 总是返回空白。我已经验证所有地方的拼写都是正确的。
我确定我在做一些明显错误的事情,但我没有看到。我研究过的众多示例都没有帮助,其中大多数都显示了添加功能而不是编辑。
提前感谢您的任何帮助。