3

我正在尝试创建一个 mvc3 c# webapplication。我想要做的是创建一个 DropDownlist 并将字典传递给它。网络界面中的用户应该会看到字典的值,这很有效。但我不想将选定的值绑定到模型,而是想要关联的键。这有可能吗?

在示例中,您会看到我如何将所选值绑定到模型:

@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扩展来完成。所以,如果你有:

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因为您现在正在制作Keys字典的Value下拉列表。)

于 2012-12-27T23:45:26.683 回答