none
MVC3のPOST時にビューのテキストボックスを更新できない RRS feed

  • 質問


  • ASP MVC3で開発をしております。
    POST時に画面で入力されたデータを加工し、再度同じビューを表示するシステムです。
    (同じ動作を何度か繰り返すことを想定しています)
    テキストボックスの値は画面の初期表示時にaaaと表示されますが、POST時にbbbとなってくれません。
    @Model.Name にはbbbと設定されています。
    何か方法が間違っているのでしょうか?
    よろしくお願いします。

    public ActionResult A() {
     AModel m = new AModel();
     m.Name = "aaa";
     return View(m);
    }
    [HttpPost]
    public ActionResult A(AModel m) {
     //DB等からデータを取得
     m.Name = "bbb";
     return View(m);
    }


    @Html.TextBoxFor(model => model.No)
    @Html.TextBoxFor(model => model.Name)

     

    2011年8月17日 0:26

回答

すべての返信

  • m.Name="bbb"; の行の前に次のように記述して実行してみてください。

    ModelState.Clear();

    このプログラムはエラーを強制的に解除するものです。
    もしこれで表示がbbbに変わるようだったら、POST時にModelを復元した時点でなんらかのエラーが発生していることが考えられます。


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    • 回答としてマーク ueHoku 2011年8月19日 0:29
    2011年8月17日 1:16
  • ありがとうございます。

    無事に値を設定できるようになりました。

     

    POST時に発生しているであろうエラーはいろいろ調べましたがわかりませんでした。

    (VS2010SP1のデフォルトプロジェクトでも同様の現象が発生しています。)

    こちらのほうは平行して調査していこうと思います。

     

    ありがとうございました。

    2011年8月17日 9:39
  • ModelState の Clear は呼ばないといけないみたいですね。
    次の URL にある通り IsValid が true のときだけにした方がいいように思いますが。
    (MVC2 の話みたいですが、MVC3 でも変わってないみたいです。)

    ASP.NET MVC 2 Model Binding for a Collection - IBloggable - implemented
    http://weblogs.asp.net/nmarun/archive/2010/03/13/asp-net-mvc-2-model-binding-for-a-collection.aspx

    unable to bind model : The Official Microsoft ASP.NET Forums
    http://forums.asp.net/t/1535846.aspx

    A Bug? EditorFor and DisplayFor don't display same value - EditorFor out of date : The Official Microsoft ASP.NET Forums
    http://forums.asp.net/p/1527149/3687407.aspx
    • 回答としてマーク ueHoku 2011年8月19日 0:29
    2011年8月17日 9:58