ホームページ > バックエンド開発 > C++ > MVC フォームがオブジェクトのリストを投稿できないのはなぜですか?

MVC フォームがオブジェクトのリストを投稿できないのはなぜですか?

Mary-Kate Olsen
リリース: 2025-01-21 14:33:09
オリジナル
326 人が閲覧しました

Why is my MVC form failing to post a list of objects?

MVC フォーム: オブジェクト リストの送信に失敗しました

問題の説明

MVC アプリケーションでは、オブジェクトのリストを含むフォームがリストをコントローラーに正しく送信しません。フォームを送信した後、コントローラーが受信したオブジェクトのリストは空です。

解決策

この問題は、フォーム要素内のリスト項目のインデックスが欠落していることが原因で発生します。モデル バインダーには、リスト内の要素を区別するためのインデックスが必要です。

実装の詳細

この問題を解決するには、部分ビューの代わりにテンプレートを使用します。

1. エディタテンプレートを作成します

ビュー フォルダーの下の "EditorTemplates" フォルダーに、"PlanCompareViewModel.cshtml" という名前のエディター テンプレートを作成します。次のコードをテンプレートに追加します:

<code>@model PlanCompareViewModel
<div>
    @Html.HiddenFor(p => p.PlanID)
    @Html.HiddenFor(p => p.CurrentPlan)
    @Html.CheckBoxFor(p => p.ShouldCompare)
</div></code>
ログイン後にコピー

2. 親ビューを変更します

次のように親ビューを更新します:

<code>@model IEnumerable<plancompareviewmodel>
@using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" }))
{
    <div>
        @Html.EditorForModel()
    </div>
}</code>
ログイン後にコピー

DisplayTemplates と EditorTemplates は、コレクションのインデックス付けを自動的に処理し、モデル バインダーがオブジェクトの正しいリストを作成するようにします。

以上がMVC フォームがオブジェクトのリストを投稿できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート