我的模型
中有以下代码 [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错误日志中抛出以下消息。
&#39;&System.Web.Mvc.HtmlHelper GT;&#39;不包含&#39; DropDownList&#39;的定义和最好的扩展方法重载&#39; System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper,string,System.Collections.Generic.IEnumerable,string,object)&#39;有一些无效的论点
答案 0 :(得分:1)
我猜这里的问题是你没有从字典中取出元素,问题出在这一行
ViewBag.GatePassTypeList = this.myModel.GatePassTypeList();
因为这个this.myModel.GatePassTypeList()
返回字典
它应该是,这不是完美的代码,但事情是你需要在将项目下载到下拉列表后传递选择列表
[NoCache]
public ActionResult GatePassList()
{
var dic = this.myModel.GatePassTypeList()
as IDictionary<string, IEnumerable<SelectListItem>;
ViewBag.GatePassTypeList = dic["entrykey"] as List<SelectListItem>;
return this.View(this.gatePassEntryModel.GetAllGatePasses());
}
@Html.DropDownList("Mobiledropdown2", ViewBag.GatePassTypeList as SelectList)