1

重複の可能性:
複雑なモデルと部分ビュー - MVC3 でのモデル バインディングの問題

プロパティがビューで使用されるモデル内のクラス内にある場合、ビューからコントローラーにデータを渡すことはできますか?

問題は、送信が発生したときに、そのモデル内のクラスに属するモデルのプロパティが設定されていないように見えることです。クラスにないプロパティは入力されます。ここにインスタンス化の問題があると考えてください。

モデルのセットアップは次のとおりです。

namespace AppName.Models
{
    public class SuperModel
    {
        public SuperModel() {
            SubModA = new SubModelA();
        }
        public string myItem1 { get; set; }
        public SubModelA SubModA { get; set; }
    }

    public class SubModelA
    {
        public string mySubAItem1 { get; set; }
    }
}

ビューは次のとおりです。

@model AppName.Models.SuperModel

@{
    ViewBag.Title = "My Page Title";
}

<h2>My Page Title:</h2>

@using (Html.BeginForm("NextController", "NextControllerFolder", new { SuperModel = Model }, FormMethod.Post))
{
    @{
        Model.myItem1 = DateTime.Now.ToShortDateString();
        Model.SubModA.mySubAItem1 = DateTime.Now.ToShortDateString();
    }
    @Html.HiddenFor(m => m.myItem1)
    @Html.HiddenFor(m => m.SubModA.mySubAItem1)

    <p>
        <button name="submit" value="Submit"><b>Continue</b></button>
    </p>
}

コントローラーは次のとおりです。

[HttpPost]
public ActionResult NextController(string button, SuperModel model, string returnUrl)
{
    // PROBLEM IS HERE>>>
    ///model.myItem1 has a value equal to the current date
    // model.SubModA.mySubAItem1 is null

    return(model);
}

この質問が理にかなっていることを願っています。答えがすぐそこにあることを願っています!ありがとう!

4

2 に答える 2

0

これを試して:

 @Html.HiddenFor(m => m.SubModA.mySubAItem1)

動作します。

于 2012-08-12T04:30:05.343 に答える
0

コードの次の行を置き換えます

@Html.HiddenFor(m => m.SubModelA.mySubAItem1)

これで

@Html.HiddenFor(m => m.SubModA.mySubAItem1)

この助けを願っています!

于 2012-08-12T05:40:33.640 に答える