所以,我正在研究的MVC项目我很快就知道顶层设计让我退缩......即从我的视图到控制器的通信。
我试图在页面加载时向用户显示一个下拉菜单,该页面将保存存储在数据库中的存储过程的标题。但是,当页面加载时,我收到以下错误消息:
类型' System.InvalidOperationException'的例外情况发生在System.Web.Mvc.dll中但未在用户代码中处理
附加信息:没有类型' IEnumerable'的ViewData项目。具有键' dataSourceDDL'。
我目前在我看来的代码如下:
@{
SelectList list = ViewBag.dataSourcesDropDownList;
}
@Html.DropDownList("dataSourceDDL", list)
我的控制器有以下代码:
public ActionResult getDataSourcesForDDL()
{
ReportingContext reportContext = new ReportingContext();
List<String> dataSources = reportContext.getDataSources();
List<SelectListItem> dataSourceDDL = new List<SelectListItem>();
foreach (String dataSource in dataSources)
{
dataSourceDDL.Add(new SelectListItem() { Text = dataSource, Value = dataSource });
}
ViewBag.dsDDL = dataSourceDDL;
ViewBag.dataSourcesDropDownList = new SelectList(dataSourceDDL, "Value", "Text");
return PartialView("selectDataSource");
}
我遇到的错误的奇怪之处在于,如果我将这些确切的代码复制并粘贴到我的Index.cshtml页面和HomeController中,下拉列表就会生成。所以我有一种直觉,认为addReport.cshtml视图的问题是没有联系addReport.cs控制器以获得这些值的初始加载,特别是因为就像我说我已经看到了这种下拉负载。 / p>
我的控制器内部有其他代码(处理用户插入新报告的方法)和我的视图(只是一个允许用户提交新报告的html表单),我认为不会问题的根源,但也许是。