【发布时间】:2013-09-17 20:05:54
【问题描述】:
我有一个帐户用户名的备份变量,我通过隐藏字段@Html.HiddenFor(u => u.backupUsername) 中的帖子保存该变量。这是表单发布到的功能:
[HttpPost]
public ActionResult Update(AccountModel newInfo)
{
validateUserInfo(newInfo);
if (ModelState.IsValid)
{
newInfo.updateToDatabase();
}
TempData["ModelState"] = ModelState;
TempData["SomeModel"] = newInfo;
return RedirectToAction("Main");
}
[HttpGet]
public ActionResult Main()
{
if (TempData.ContainsKey("ModelState"))
{
ModelState.Merge((ModelStateDictionary)TempData["ModelState"]);
return View("View", (SomeModel)TempData["SomeModel"]);
}
}
在updateToDatabase() 中,更新备份用户名以匹配当前用户名。我设置了断点并在调试期间查看了值,以确认这确实发生并且有效。
但是,一旦再次调用 Update(),newInfo.backupUsername 就会恢复到更改之前的状态。我在这里想念什么?不应该从传入的模型中重新填充表单的值(以及隐藏字段的值)吗?
【问题讨论】:
-
查看 HTML 源码时,隐藏元素的值是否正确?
-
@asymptoticFault 不,相同的未更改,错误的值。
-
@asymptoticFault 是的,不幸的是不起作用。
标签: c# asp.net-mvc-4 razor