我遇到了如何在数据库中显示值下拉列表的问题。我的数据库表(Categories)包含2列,即类别的ID和标题。目标是提供一个下拉列表,用户可以在其中选择存储在表格中的标题。
型号:
public partial class Category
{
public int Id { get; set; }
public string Title { get; set; }
}
控制器:
public ActionResult Index()
{
private Context db = new Context();
ViewBag.Category = new SelectList(db.Categories, "Id", "Title");
return View();
}
查看:
@model MyApp.Models.Category
<p>
Categories: @Html.DropDownList("Id", "Select a Category")
</p>
我得到的错误是在视图中说:
There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'Id'.
答案 0 :(得分:4)
您没有将SelectList
传递给DropDownList()
方法,而是传递属性名称为id。
@Html.DropDownList("Category", "Select a Category")
使用重载的DropDownList显式传递SelectList对象,将ViewBag.Category转换为SelectList。
@Html.DropDownList("CategoryNameOfSelect", (SelectList)ViewBag.Category, "Select a Category")
public static MvcHtmlString DropDownList(这个HtmlHelper htmlHelper, 字符串名称,IEnumerable selectList,string optionLabel)
<强>的HtmlHelper 强> 键入:System.Web.Mvc.HtmlHelper 此方法扩展的HTML帮助程序实例。
命名强> 键入:System.String 要返回的表单字段的名称。
<强>的SelectList 强> 键入:System.Collections.Generic.IEnumerable 用于填充下拉列表的SelectListItem对象的集合。
<强> optionLabel 强> 键入:System.String 默认空项的文本。此参数可以为null。
答案 1 :(得分:3)
您在 viewbag的类别键中放置了下拉项目,并且您正在传递“Id”,这是您需要传递Category
<的错误/ p>
您可以在此处将其保存在类别键中:
ViewBag.Category = new SelectList(db.Categories, "Id", "Title");
试试这样:
@Html.DropDownList("Category","Select a Category")
答案 2 :(得分:0)
试试这种方式
@Html.DropDownList("Category", (SelectList)ViewBag.Category, "Select a Category")
或强>
@Html.DropDownList("Category", ViewBag.Category as SelectList, "--Select a Category--")