【发布时间】:2015-03-11 06:51:20
【问题描述】:
我的模型
中有以下代码 [NoCache]
public IEnumerable GatePassTypeList()
{
IDictionary<string, IEnumerable<SelectListItem>> gatePassTypelist = new Dictionary<string, IEnumerable<SelectListItem>>();
List<SelectListItem> gatePassType = new List<SelectListItem>();
var gatePassData = this.db.GatePassType.OrderBy(r => r.GatePassTypeName).Select(r => r).ToList();
foreach (var item in gatePassData)
{
gatePassType.Add(new SelectListItem { Text = item.GatePassTypeName, Value = item.GatePassTypeID.ToString() });
}
gatePassTypelist.Add(string.Empty, gatePassType);
return gatePassTypelist;
}
在我的控制器中,我有以下操作
[NoCache]
public ActionResult GatePassList()
{
ViewBag.GatePassTypeList = this.myModel.GatePassTypeList();
return this.View(this.gatePassEntryModel.GetAllGatePasses());
}
最后在我的视图中,我有以下代码
<td>
@Html.DropDownList("ddlGatePassTypeList", ViewBag.GatePassTypeList as IDictionary<string, IEnumerable<SelectListItem>>, "[All]", new { @multiple = "multiple" })
</td>
我想要实现的是显示 GatePass 类型列表,但在我看来,上述行在我的 Elmah 错误日志中抛出以下消息。
'System.Web.Mvc.HtmlHelper>' 不包含 'DropDownList' 的定义和最佳扩展方法重载 'System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper, string , System.Collections.Generic.IEnumerable, string, object)' 有一些无效参数
【问题讨论】:
-
第二个参数是
IEnumerable<SelectListItem>或SelectList不是Dictionary<TKey,TValue> -
DropDownList的第二个参数需要是IEnumerable<SelectListItem>而不是字典(如果要多选,请使用ListBoxFor()
标签: c# asp.net-mvc-4 html-helper