模型填充在ctor中。 当我单击编辑以编辑项目时,一切正常,我可以清楚地看到在TryUpdateModel()调用之后模型已在模型中更新。
但是,当它重定向到索引时,Models不再具有我的更改。发生了什么?
// GET: /Contact/
public ActionResult Index()
{
return View(Models);
}
// GET: /Contact/Edit/5
public ActionResult Edit(int id)
{
var contactModel = Models.Find((x) => x.ID == id);
return View(contactModel);
}
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
var contactModel = Models.Find((x) => x.ID == id);
if (TryUpdateModel(contactModel))
{
return RedirectToAction("Index");
}
return View(contactModel);
}
答案 0 :(得分:0)
我相信您只是从编辑调用中更改了内存中的模型,但未将更改保存到持久存储(数据库),因此您的ctor正在从未保存的状态重新加载它。
答案 1 :(得分:0)
这取决于您使用什么来保存模型(将它们保存到数据库)。在我的情况下,我遇到了同样的问题,我必须确保在重定向之前我使用Update
或Save
方法调用了一些东西,因为我的模型会话的范围是HTTP请求,重定向没有导致我的会话被刷新,并且保存了更改。
在我的情况下,我使用的是nHibernate,最后在动作完成后添加了一个属性,我刷新了我的更改。
答案 2 :(得分:0)
html助手默认在帖子上使用ModelState。它假定如果没有重定向,则必定存在错误,因此显示“旧”值。
您必须清除模型状态(ModelState.Clear())或提出不同的模式:)