2

ここで非常に些細なことを見逃していると思いますが、それを見つけていません。PostModel プロパティを変更するメソッドがあります。次に、そのモデル プロパティに新しいプロパティ値を反映させたいと考えています。だからここに作品があります:

コントローラ:

    [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"

4

3 に答える 3

4

@Html.LabelForプロパティ名 (または で定義された名前DisplayAttribute) が@Html.DisplayFor表示され、プロパティの内容が表示されます。"Hello this is a different value"表示したい場合は@Html.LabelFor@Html.DisplayFor

于 2013-11-08T15:24:12.473 に答える
3

html ヘルパーはModelState、値をバインドするときに を調べてから、モデルを調べます。

したがって、コントローラー アクション内の POST された値を変更する場合は、最初にモデルの状態からそれらを削除してください。

 ModelState.Remove("PropertyName");

このMVC 3 を読んでください - Html.EditorFor は $.ajax 呼び出し後に古い値をキャッシュしているようです

于 2013-11-08T15:24:12.070 に答える
1

それが の目的でLabelFor、プロパティ名を表示します。ビューへのタグEditorFor内でモデルプロパティを直接使用するか、単にアクセスしますlabel

     <h5>Hello</h5> 
     <input id="SendMessage" type="submit" value="Send Message"/> 
     <label>@Model.MyValue</label>
于 2013-11-08T15:24:10.343 に答える