0

我在视图上有一个带有下拉列表的表单,使用 DropDownListFor() 实现。这个 View 是强类型的 ViewModel,它有一个 SelectList 属性来保存下拉列表的选项,然后是另一个属性来保存下拉列表的选定值。这工作正常,但我想做的是,在我的第二个属性中同时保存下拉列表的选定值和选定文本。我想这样做的原因是,作为自我发布的表单,我同时拥有每个选择的文本和值。

我尝试将选定的值属性从 int 更改为 KeyValuePair,但在表单提交时只设置了该对的 int 部分。

也许有更好的方法来实现这一点,我愿意接受所有建议,包括对我的方法进行部分重新设计。

控制器(构建 SelectList)

SelectList leadTypeGroups = new SelectList(_enrollmentRepository.GetLeadTypeGroups(), "Key", "Value");

视图模型

public KeyValuePair<int, string> LeadTypeGroupID { get; set; }
public SelectList LeadTypeGroups { get; set; }

看法

@Html.DropDownListFor(selected => Model.LeadTypeGroupID, Model.LeadTypeGroups, " ")
4

2 回答 2

1

让服务器在每次请求时从数据库(或内存缓存)中提取值。或者,有一个带有 javascript 的隐藏字段,只要下拉选择更改,它就会使用适当的文本更新它。

于 2012-04-17T17:12:18.940 回答
0

将 ViewModel 更改为 List,然后使用 for 循环为列表中的每个项目生成一个下拉列表。就像是...

看法

@for( int i = 0; i < Model.LeadTypeGroupIDs; i++ )
{
  @Html.DropDownListFor(x => Model.LeadTypeGroupIDs[i], Model.LeadTypeGroups, " ")
}

视图模型

public List<string> LeadTypeGroupIDs { get; set; }
public SelectList LeadTypeGroups { get; set; }
于 2012-04-13T15:09:18.997 回答