我有一个表单,允许用户输入一些文本。它将超过几个字符,所以我想使用TextArea而不是TextBox。
Html.TextBoxFor没有问题,Html.TextAreaFor在我创建条目时起作用,但在我编辑它时不存储新值,并在我保存之前编辑它之前显示任何值。< / p>
在页面上:
<div>
<label>Work Performed:</label>
<%: Html.TextAreaFor(model => model.WorkPerformed)%>
<%: Html.ValidationMessageFor(model => model.WorkPerformed) %>
</div>
创建代码:
maintPerformed.MaintDate = DateTime.Parse(Request.Form["MaintDate"]);
maintPerformed.WorkPerformed = Request.Form["WorkPerformed"];
maintPerformedRepository.Add(maintPerformed);
maintPerformedRepository.Save();
return RedirectToAction("Details", new { id = maintPerformed.ID });
编辑背后的代码:
maintPerformed.MaintDate = DateTime.Parse(Request.Form["MaintDate"]);
maintPerformed.WorkPerformed = Request.Form["WorkPerformed"];
maintPerformedRepository.Save();
return RedirectToAction("Details", new { id = maintPerformed.ID });
我在编辑方面缺少什么?
答案 0 :(得分:2)
在这两种情况下,您都会重定向到Details
操作。因此,请确保maintPerformedRepository.Save()
实际执行某些操作,最重要的是在Details
操作中查看从数据存储中获取的值。我怀疑数据库未更新,或者在Details
操作中,您为模型获取了错误的值。
备注:不要将丑陋的DateTime.Parse(Request.Form["MaintDate"]);
和Request.Form["WorkPerformed"];
写入您的视图模型作为参数传递给控制器操作,而是让模型绑定器从请求值中填充它。