尝试在加载时填充下拉列表时出错

时间:2017-03-15 06:34:18

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

所以,我正在研究的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表单),我认为不会问题的根源,但也许是。

0 个答案:

没有答案