3

mvc3 c#Webアプリケーションを作成しようとしています。私がやろうとしているのは、DropDownlistを作成し、それに辞書を渡すことです。Webインターフェイスのユーザーは、辞書の値を確認する必要があり、それが機能します。しかし、選択した値をモデルにバインドしたくはありません。代わりに、関連付けられたキーが必要です。それはどういうわけか可能ですか?

この例では、選択した値をモデルにバインドする方法を確認できます。

@Html.DropDownListFor(model => model.EditDate, new SelectList(Versions.Values), Model.EditDate)

Versions.ValuesはDateTimes(ディクショナリの値)です。送信時に、選択した値はmodel.EditDateにバインドされます。しかし、選択した値の関連付けられたキーをバインドしたい(値はidです)。

どうやってやるの?

前もって感謝します

4

1 に答える 1

4

Dictionary<T1,T2>をに変換する必要があります。SelectList通常は、Linq拡張機能の1つを使用して行われます。だから、もしあなたが持っていたら:

Dictionary<Int32,DateTime> Versions = new Dictionary<Int32,DateTime> {
  { 1, new DateTime(2012, 12, 1) },
  { 2, new DateTime(2013, 1, 1) },
  { 3, new DateTime(2013, 2, 1) },
};

次に、次を使用できます。

@Html.DropDownListFor(model => model.EditDate,
  Versions.Select(x => new SelectListItem {
    Text = x.Value.ToShortDateString(),
    Value = x.Key.ToString(),
    Selected = x.Value == Model.EditDate
  })
)

(これは、辞書のをドロップダウンリストのにしているmodel.EditDateためintです。)KeysValue

于 2012-12-27T23:45:26.683 に答える