在c#的下拉框中显示数据库值时出错

时间:2014-04-22 04:40:10

标签: c# asp.net-mvc asp.net-mvc-4 drop-down-menu

我遇到了如何在数据库中显示值下拉列表的问题。我的数据库表(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'.

3 个答案:

答案 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--")