none
ASP.NET MVC4 でコントローラーがモデルバインドしません RRS feed

  • 質問

  • MVC4では、コントローラーがモデルを自動的にバインドしてくれるとのことで、簡単なアプリを作ってみたのですが、まったくバインドしてくれません。

    コントローラ

            public ActionResult Zaku(ZakuModel model)
            {
                return View(model); //model.name = null
            }

    モデル

        public class ZakuModel
        {
            public String name;
        }

    ビュー

    @model ZakuModel
    <!DOCTYPE html>
    <html>
    <head>
        <title>View</title>
    </head>
    <body>
        <div> 
         @using (Html.BeginForm())
         {
          @Html.EditorFor(Model => Model.name)
          <input type="submit" value="submit" />
         }
        </div>
    </body>
    </html>

    これでテキストボックスに値を入れ、ボタンを押してバインドしてほしいのですが、モデルのname はnull のままです。

    ちなみに、コントローラを下記に書き換えると、入力値は正しく取得できています。

            public ActionResult Zaku(String name)
            {
                ViewBag.Name = name; //入力値ゲット成功
                return View();
            }

    なにが問題なのでしょうか。ご教示いただきたくお願い致します。


    2015年3月27日 11:56

回答

  • 検証などはしてないのでハズレかもしれませんが、モデルのフィールドをプロパティに変更したらどうなりますか?

    public String name; ⇒ public String name { get; set; }
    • 回答としてマーク CharAzurable 2015年3月27日 14:40
    2015年3月27日 14:39

すべての返信