ASP.NET MVC 2 Html.TextArea对于不在Edit上更新

时间:2010-09-29 17:01:08

标签: asp.net-mvc asp.net-mvc-2

我有一个表单,允许用户输入一些文本。它将超过几个字符,所以我想使用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 });

我在编辑方面缺少什么?

1 个答案:

答案 0 :(得分:2)

在这两种情况下,您都会重定向到Details操作。因此,请确保maintPerformedRepository.Save()实际执行某些操作,最重要的是在Details操作中查看从数据存储中获取的值。我怀疑数据库未更新,或者在Details操作中,您为模型获取了错误的值。

备注:不要将丑陋的DateTime.Parse(Request.Form["MaintDate"]);Request.Form["WorkPerformed"];写入您的视图模型作为参数传递给控制器​​操作,而是让模型绑定器从请求值中填充它。