1

私の見解では、モデルとしてリストを使用しており、各リストアイテムはモデルタイプであるため、次のようになります。

@model IEnumerable<UserManager.Models.vw_UserManager_Model>

このリストをループして、DropDownListForに特定のプロパティを追加しようとしています。

@for (int i = 0; i < Model.Count(); i++)
{
    Html.DropDownListFor(model => model.ElementAt(i).module, new SelectList(Model, Model.ElementAt(i).module));
}

しかし、これを行うと、ページにドロップダウンメニューが表示されません。

地元の人の私のリストの画像

誰かが助けることができますか?

4

1 に答える 1

2

ドロップダウンでモデル全体を表す方法がないため、モデルのドロップダウンリストをレンダリングすることはできません。ASP.NETは何をレンダリングすることになっていますか?

リストからモデルを選択したい場合にできることは、リストに対してLINQSelectクエリを実行することです。これにより、次のIEnumerable<SelectListItem>ように作成できます。

var selectList = Model
    .Select(x => new SelectListItem
    {
        Name = x.module_name,
        Value = x.module
    });

あなたが投稿したスクリーンショットから値を取得しようとしました。エラーが発生した場合はお詫び申し上げます。あなたはアイデアを得る...

このコードは、オブジェクトタイプ(Model.Select)のコレクションをループして、のコレクションを返しますSelectListItem。LINQに慣れていない場合はSelect、変換関数として考える必要があります。コレクションを取得し、要素ごとにそれを別のものに変換して結果を返します。ここでは、Modelコレクションの各要素を取得して、を作成しSelectListItemます。次に、を返しますIEnumerable<SelectListItem>

ページにリストを表示するには、次のようにします。

@Html.DropDownListFor(Model.MyValue, selectList)

...ここで、Model.MyValueは、選択された値を受け取る変数です(値がであると仮定するとmodelstringそのように見えます)。

于 2012-11-30T11:57:29.897 に答える