2

ユーザーがインデックスビューモデルを使用して現在リストされているアイテムを表示できるようにし、次にユーザーが別のビューモデルを作成して新しいアイテムを作成できるようにする単一のビューを作成しようとしています。

したがって、2つのviewModels-IndexFunkyThingsViewModel-CreateFunkyThingViewModelがあります

本質的に、私は主な見解を持っています:

@model IndexFunkyThingsViewModel
@foreach (var item in Model.FunkyThings)
{
/*Indexy stuff*/    
}

/*If create item*/
@if (Model.CreateFunkyThing)
{
@Html.Partial("_CreateFunkyThingPartial", new CreateFunkyThingViewModel());
}

それから私の部分的なビューで私は持っています

@model CreateFunkyThingViewModel
@using (Html.BeginForm(MVC.FunkyThings.CreateFunkyThing(Model)))
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Create FunkyThing</legend>
        @Html.EditorForModel();
        <p>
            <input type="submit" class="button green" value="CreateFunkyThing" />
        </p>
    </fieldset>
}

最後に、コントローラーには次のものがあります。

[HttpPost]
public virtual ActionResult CreateFunkyThing(CreateFunkyThingViewModel createFunkyThingViewModel)
{
    ..
}

これはすべてうまくコンパイルされているようで、ビューに移動すると、作成フィールドなどを表示するまで機能します。ただし、送信ボタンを押すと、コントローラーはデータを受信しません。ActionResultが呼び出されますが、デバッガーでは、送信ボタンによって呼び出されたときにcreateFunkyThingViewModelパラメーターがnullになります。

私は何が間違っているのですか?

4

1 に答える 1

2

コントローラに投稿するときは、モデルをコントローラに送信していません。これを使って:

 @using (Html.BeginForm("CreateFunkyThing", "ControllerName", FormMethod.Post))

次に、ボタンの周りからpタグを削除し、何も使用しないでください。

段落タグは、同じ外部コンテナ内にある場合でも、ボタンをフォームとは別にグループ化する傾向があります。

于 2013-03-11T14:58:41.763 に答える