0

我将非常感谢以下方面的帮助。我正在尝试从列表中填充下拉菜单并不断收到此错误。我阅读并尝试了类似标题帖子中的所有建议,但无法正常工作。

在控制器中我有:

        public ActionResult Search(string stringInput)
    {
        ClassManager manger = new ClassManager();
       ViewData["myList"] =  manger.GetData(stringInput, SearchBy);//Returns List<string>

        return View();
    }

在视图中我有:

@Html.DropDownList("MyList", (IEnumerable<SelectListItem>)ViewData["myList"], "Select...")

非常感谢。

4

2 回答 2

0

DropDownList 始终在寻找 SelectListItem 类型的列表,而不是您的特定模型实例。这似乎让几乎每个人都感到不安。

解决方案是将要显示的列表 ( IEnumerable<string>) 翻译成IEnumerable<SelectListItem>. 最简单的方法是ViewData["myList"] = new SelectList(manger.GetData(stringInput, SearchBy))可能适用于您的示例,也可能不适用于您的示例。

我个人使用的 ViewModel 由作为一个属性的模型视图和作为另一个属性的 SelectList 组成。当我发布结果时,我会根据需要将元素拉出并放入相应的数据库/存储库调用中。前面有点抽象,但在视图方面感觉更干净一些。

于 2013-09-18T17:34:27.893 回答
0

您可以使用在 DropDownListSelectList中填充对象List<string>

@Html.DropDownList("MyList", 
                   new SelectList((IEnumerable)ViewData["myList"]), "Select...")
于 2013-09-18T17:35:35.580 回答