【问题标题】:Form Values from Model Not Updating in View After Post模型中的表单值在发布后未在视图中更新
【发布时间】:2013-11-08 15:21:11
【问题描述】:

我相信我在这里遗漏了一些非常微不足道的东西,但我没有发现它。我有一个 Post 方法,它修改了 Model 属性。然后我希望该模型属性反映新的属性值。所以这里是碎片:

控制器:

    [HttpPost]
    public ActionResult Index(HomeModel model)
    {

        ModelState.Clear(); //Didn't help
        model.MyValue = "Hello this is a different value";

        return View(model);

    }

型号:

public class HomeModel
{
    [Display(Name = "My Message")]
    public string MyValue { get; set; }

}

查看:

@model MyApp.Models.HomeModel
@{
   ViewBag.Title = "My MVC App";
   Layout = "~/Views/Shared/_Layout.cshtml";
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title></title>
</head>
<body>
   <div>
      @using (Html.BeginForm("Index", "Home"))
      {
         <h5>Hello</h5> 
         <input id="SendMessage" type="submit" value="Send Message"/> 
         @Html.LabelFor(m => m.MyValue)
      }

   </div>
</body>
</html>

当我调试控制器时,我可以看到更新的模型,但我的 LabelFor 始终具有 Display 属性,而不是我提供的 "Hello this is a different value" 的值。我在这里缺少什么,这个标签没有更新?

【问题讨论】:

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


    【解决方案1】:

    @Html.LabelFor 显示您的属性名称(或在您的DisplayAttribute 中定义的名称),而@Html.DisplayFor 显示您的属性内容。如果您希望显示"Hello this is a different value",请将@Html.LabelFor 替换为@Html.DisplayFor

    【讨论】:

    • 我知道这很简单。 :/ 谢谢你这工作得很好。
    【解决方案2】:

    html 助手在绑定它们的值然后在模型中查看ModelState

    因此,如果您打算修改控制器操作中的任何 POST 值,请确保首先将它们从模型状态中删除:

     ModelState.Remove("PropertyName");
    

    阅读此MVC 3 - Html.EditorFor seems to cache old values after $.ajax call

    【讨论】:

      【解决方案3】:

      这就是LabelFor的目的,显示属性名。要么使用EditorFor,要么直接在label标签内访问模型属性到你的视图

           <h5>Hello</h5> 
           <input id="SendMessage" type="submit" value="Send Message"/> 
           <label>@Model.MyValue</label>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-21
        • 1970-01-01
        • 2013-08-30
        • 2020-05-09
        相关资源
        最近更新 更多