不包含“DropDownList”的定义

4

更新:

由于我的DropDownTypes是一个集合,所以我尝试传递如下内容:它起作用了,但我遇到的唯一问题是它选择了默认值,这个默认值是索引为0的值,而我的item.Type是所选值。

 @Html.DropDownListFor(m => item.Type, new SelectList(item.DropDownTypes.Select(x => x.Text)))

我在这里做错了什么,我试图加载下拉列表

'System.Web.Mvc.HtmlHelper'不包含'DropDownList'的定义,并且最佳扩展方法重载'System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper,string,System.Collections.Generic.IEnumerable,object)'具有一些无效参数

@model IEnumerable<web.Models.CollectionViewModel>
@foreach (var item in Model )
{
  <tr>
    <td>
         @Html.DropDownList(item.DropDownTypes, (IEnumerable<SelectListItem>)ViewBag.DropDownLoadRecoveryType, new { @class = "form-control" })
    </td>
  </tr>
}


你有一些问题 - 除非在每次迭代中生成新的 SelectList 并设置选定值,否则无法在循环中使用 DropDownListFor(),或者为模型使用自定义 EditorTemplate 并传递额外的视图数据作为 SelectList。你能发布模型和 GET 方法吗? - user3559349
3个回答

4
这是我如何实现分辨率的方法,以防其他人需要了解。
@Html.DropDownListFor(model => item.Type.Value, new SelectList(ViewBag.DropDownLoadRecoveryType,  "Value", "Text", item.Type))

0

你正在使用的DropDownList助手的第一个参数必须是字符串,因此请确保item.DropDownTypes实际上是一个字符串。如果不是,您可以考虑在其上调用.ToString()


我现在正在研究它,我的 item.DropDownTypes 是一个集合,所以即使我使用了 DropdownlistFor - Nick Kahn

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

是的,我已经尝试过了。现在发生的情况是所有的下拉列表都显示相同的文本,即使我的ID不同。 - Nick Kahn
我已经更新了我的问题,请看一下。 - Nick Kahn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接