0

と呼ばれるデータベーステーブルとItemAttributeLinksこれらのコレクションもあります

Collection<ItemAttributeLink> ItemAttributeLinks

さて、私の見解では、n個のドロップダウンをこのコレクションのn個のアイテムにバインドするためにこれを行います。これは動作しません。の値m.Item.ItemAttributeLinksは常にnullです。ドロップダウンの値が表示され、すべて正しいです。問題は、選択した値がポストバックにバインドされないことです。

@{
            int i = 0;
            foreach (var type in @Model.AttributeTypes)
            {
                <section>
                    <label>@type.Text</label>
                    <div> @Html.DropDownListFor(m => m.Item.ItemAttributeLinks[i] ,Model.AttributeValuesList[Convert.ToInt32(type.Value)], "Select a value")</div>
                </section>
                i++;
            }  

ちなみに、ItemAttributeLinkテーブルには、int id、int外部キーattributevalueid、およびint外部キーItemIdが含まれています。

この方法で複数のドロップダウンをバインドする正しい方法は何ですか?}

4

1 に答える 1

0

ドロップダウンをプリミティブ型(整数、文字列、GUIDなど)にバインドする必要があります。

@Html.DropDownListFor(
    m => m.Item.ItemAttributeLinks[i].SomePrimitiveTypeProperty,
    Model.AttributeValuesList[Convert.ToInt32(type.Value)], 
    "Select a value"
)

次に、POSTコントローラーアクション内で、プリミティブ型に選択した値が入力されます。対応するモデルを取得する場合は、IDを使用してデータベースにクエリを実行する必要があります。

HTMLでは、<select>要素(DropDownListヘルパーが生成するもの)は、フォームが送信されたときに選択された値のみを送信することに注意してください。複合型にバインドすることはできません。

于 2012-10-30T06:58:36.983 に答える