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)
}

上面的代码不起作用:我应该怎么写?我没有编写 lambda 表达式的经验:是否有任何替代方法可以生成一个下拉列表,selected只需传入属性和选择列表即可自动获取正确的属性?还是我必须写表达式?谢谢!

这是我得到的错误:

模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。

4

2 回答 2

0

我还没有时间尝试这个,但绊脚石可能是代码试图绑定PropertyInfo,而不是类的实际属性。我会试一试:

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 回答