【问题标题】:C# MVC4 changed view property not changing data on view HTML pageC# MVC4 更改视图属性未更改视图 HTML 页面上的数据
【发布时间】:2013-03-02 23:06:43
【问题描述】:

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

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

[HttpPost]
public ActionResult Create(ScheduledCall scheduledcall)

scheduledCall 模型对象有一个名为 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!”。

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

【问题讨论】:

  • @Model.Content 输出什么?

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


【解决方案1】:

可能不是您要寻找的答案。

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

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

【讨论】:

    【解决方案2】:

    我想你的答案就在这里

    Html.TextBoxFor does not show updated value in POST action

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

    也遇到过一次,它是 MVC 框架不那么明显的角落之一。

    问候,贾科

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2014-07-04
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      相关资源
      最近更新 更多