更新:Jacco的建议(下面)为我解决了这个问题。即,ModelState.Clear()是你的朋友。
我有一个名为ScheduleController的控制器,其ActionResult如下所示:
[HttpPost]
public ActionResult Create(ScheduledCall scheduledcall)
scheduledCall模型对象具有名为content的属性。我有一个条件,我想改变内容属性的值,并将模型返回到视图供用户在浏览器中读取。我发现虽然可以轻松地更改属性的值,但视图不会将新值呈现给HTML显示。相反,它显示用户提交的内容。
控制器操作中的示例:
scheduledcall.Content = "Mark my words!";
ViewBag.message = scheduledcall.Content;
return View(scheduledcall);
在视图中,我输出@ViewBag.message(在控制器中设置以匹配scheduledcall.Content属性的值)。视图中的输出是“标记我的单词!”,但内容的文本区域(@ Html.TextAreaFor(model => model.Content))显示用户输入的文本,而不是“标记我的单词!”。 / p>
如何让视图在文本区域中显示更新的值?
答案 0 :(得分:2)
可能不是您正在寻找的答案。
不要从POST返回渲染视图,而应考虑使用Post/Redirect/Get模式。
Post / Redirect / Get(PRG)是一种Web开发设计模式 防止一些重复的表单提交,创建更直观 用户代理(用户)的界面。 PRG实现了书签和 以可预测的方式刷新按钮,不会创建重复 表格提交。
答案 1 :(得分:2)
我认为你的答案就在这里
Html.TextBoxFor does not show updated value in POST action
ModelState.Clear();或者复制模型应该可以解决问题。
也是这一次,它是MVC框架中不那么明显的角落之一。
问候,Jacco