C#MVC4更改了视图属性而不更改视图HTML页面上的数据

时间:2013-03-14 14:27:17

标签: c# asp.net-mvc asp.net-mvc-4

更新: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>

如何让视图在文本区域中显示更新的值?

2 个答案:

答案 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