0

更新:Jacco 的建议(如下)为我解决了这个问题。即, ModelState.Clear() 是你的朋友。

我有一个名为 ScheduleController 的控制器,其 ActionResult 如下所示:

[HttpPost]
public ActionResult Create(ScheduledCall scheduledcall)

scheduleCall 模型对象有一个名为 content 的属性。我有一个条件,我想更改 content 属性的值并将模型返回到视图以供用户在浏览器中阅读。我发现虽然更改属性的值很容易,但视图不会将新值呈现给 HTML 显示。相反,它显示用户提交的内容。

控制器动作中的示例:

scheduledcall.Content = "Mark my words!";
ViewBag.message = scheduledcall.Content;
return View(scheduledcall);

在视图上,我输出 @ViewBag.message(在控制器中设置以匹配 schedulecall.Content 属性的值)。视图中的输出是“Mark my words!”,但内容的文本区域 (@Html.TextAreaFor(model => model.Content)) 显示的是用户输入的文本,而不是“Mark my words!”。

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

4

2 回答 2

2

可能不是您要找的答案。

考虑使用Post/Redirect/Get模式,而不是从您的 POST 返回呈现的视图。

Post/Redirect/Get (PRG) 是一种 Web 开发设计模式,可以防止一些重复的表单提交,为用户代理(用户)创建更直观的界面。PRG 以可预测的方式实现书签和刷新按钮,不会创建重复的表单提交。

于 2013-03-14T14:30:31.177 回答
2

我想你的答案就在这里

Html.TextBoxFor 在 POST 操作中不显示更新的值

ModelState.Clear(); 或者复制模型应该可以解决问题。

曾经也遇到过这个问题,它是 MVC 框架中不那么明显的角落之一。

问候, 雅科

于 2013-03-14T15:18:54.163 回答