1

私のモデル;

namespace GeneralUtility.Models
{
  public class MyModel
  {
    public int BirthDateYear { get; set; } 
    public String Details { get; set; }
  }
}

私のコントローラー

namespace GeneralUtility.Controllers
{
  public class WorkspaceController : Controller
  {
     public ActionResult MyHelper(MyModel model)
    {
      if(model.someCondition)
         model.Details= "TEST";
      else
         model.Details= "Some other TEST";   

     return View(model);
    }
  }
}

私の見解

<div data-role="fieldcontain">
  @using (Html.BeginForm("MyHelper", "WorkSpace", FormMethod.Post, new { id = "frmMyForm" }))
  {
     ...
     <div data-role="fieldcontain">
       @Html.EditorFor(x => x.Details )
     </div>
     ...
  }
</div>

フォームを送信すると、モデルと、MyHelper アクション メソッドで行った変更を確認できます。ただし、変更を加えてコントローラーからモデルを返すと (デバッグ中にモデルの変更を確認できます)。フィールドで以前と同じ値を取得し@Html.EditorFor(x => x.Details )ます。モデルの変更された詳細値を表示するにはどうすればよいですか?

4

1 に答える 1

2

これは、既定で ASP.NET MVC がメソッドに渡されたモデルを返すためです (ModelState存在する場合は、に格納されているものを使用します)。存在しない場合は、ビューに渡したものを使用します。

これを防ぐにはModelState.Clear()、ビューを返す前に呼び出す必要があります。

詳細な説明については、このブログ投稿を確認してください。

于 2013-09-27T12:34:57.077 に答える