更新:
因为我的DropDownTypes
是一个集合,所以我尝试传递这样的东西:它有效,但我唯一的问题是它选择默认值,无论索引为0和我的{ {1}}是选定的值
item.Type
我在这里做错了,我正在尝试加载下拉列表
'System.Web.Mvc.HtmlHelper>' 不包含'DropDownList'的定义和最佳定义 扩展方法重载 “System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper, 串, System.Collections.Generic.IEnumerable, 对象)'有一些无效的参数
@Html.DropDownListFor(m => item.Type, new SelectList(item.DropDownTypes.Select(x => x.Text)))
答案 0 :(得分:3)
这是我能够达成解决方案的方式,以防其他人需要知道。
@Html.DropDownListFor(model => item.Type.Value, new SelectList(ViewBag.DropDownLoadRecoveryType, "Value", "Text", item.Type))
答案 1 :(得分:0)
您使用的DropDownList
助手的第一个参数必须是字符串,因此请确保item.DropDownTypes
实际上是一个字符串。如果不是,您可以考虑在其上调用.ToString()
。
答案 2 :(得分:0)
您应该考虑将下拉列表的选定值添加到模型的另一个变量中。这样您就可以在下拉列表中使用它,因为您目前正在通过一个无效的列表:
@model IEnumerable<web.Models.CollectionViewModel>
@foreach (var item in Model )
{
<tr>
<td>
@Html.DropDownList(item.SelectedDropDownType, (IEnumerable<SelectListItem>)ViewBag.DropDownLoadRecoveryType, new { @class = "form-control" })
</td>
</tr>
}
item.SelectedDropDownType
可能
public string SelectedDropDownType { get; set;}