1

いつもDropDownListForこんな感じで使ってます

Html.DropDownListFor(m => m.PropertyOfTheModel, SelectionList)

これは、ドロップダウン リストを作成しようとしているプロパティの正確な名前 (この場合は ) を知っている限り、問題なく機能しますPropertyOfTheModel

今、私には別の仕事があります。object私のモデルには、 として宣言され、 と呼ばれる固定プロパティが含まれていますFormModel。リフレクションを使用して、に含まれるすべてのプロパティのドロップダウンを作成したいとしFormModelます。部分を解決できた属性のおかげでSelectionList、最初の引数を記述しなければなりませんが、その方法がわかりません。

foreach (var property in Model.FormModel.GetType().GetProperties())
{
  @Html.DropDownListFor(m => m.FormModel.GetType().GetProperty(property.Name), SelectList)
}

上記のコードが機能しません。どのように記述すればよいですか? 私はラムダ式を書いた経験がありません:selectedプロパティと選択リストを渡すだけで正しい属性を自動的に取得するドロップダウンリストを生成する代替手段はありますか? それとも式を書く必要がありますか?ありがとう!

これは私が得るエラーです:

テンプレートは、フィールド アクセス、プロパティ アクセス、単一次元の配列インデックス、または単一パラメーターのカスタム インデクサー式でのみ使用できます。

4

2 に答える 2

0

私はまだこれを試す時間がありませんでしたが、つまずきの原因は、コードがPropertyInfoクラスの実際のプロパティではなく bind を試みていることかもしれません。私はこれを試してみます:

foreach (var property in Model.FormModel.GetType().GetProperties())
{
  @Html.DropDownListFor(m => property.Name, SelectList)
}
于 2013-07-29T15:32:30.037 に答える
0

次のように簡単だと思います。

@Html.DropDownList(property.Name, SelectList)

DropDownListFor ヘルパーを使用しないでください。代わりに DropDownList を使用してください。

于 2014-04-16T19:43:09.257 に答える