【问题标题】:Error displaying database values in dropdown box in c#在 C# 的下拉框中显示数据库值时出错
【发布时间】:2014-04-22 13:37:03
【问题描述】:

我在如何在我的数据库中显示值的下拉列表时遇到问题。我的数据库表(类别)包含 2 列,即类别的 Id 和 Title。目标是提供一个下拉列表,用户可以在其中选择存储在表格中的标题。

型号:

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'.

【问题讨论】:

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


    【解决方案1】:

    您没有将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 选择列表,字符串 选项标签)

    htmlHelper 类型:System.Web.Mvc.HtmlHelper 此方法扩展的 HTML 帮助程序实例。

    姓名 类型:System.String 要返回的表单字段的名称。

    选择列表 类型:System.Collections.Generic.IEnumerable 用于填充下拉列表的 SelectListItem 对象的集合。

    选项标签 类型:System.String 默认空项目的文本。该参数可以为空。

    【讨论】:

    【解决方案2】:

    您在 viewbag 的 类别键中放置下拉项目,并且您正在传递 "Id" 这是您需要传递的错误Category

    您将其保存在类别键中:

    ViewBag.Category = new SelectList(db.Categories, "Id", "Title");
    

    试试这样:

    @Html.DropDownList("Category","Select a Category")
    

    【讨论】:

    • 哈哈成功了。我真的不明白为什么它想要传递类别而不是 ID。必须继续学习,但谢谢!
    • 因为你正在设置 ViewBag.Category 所以你需要在 DropDownList 中传递键名
    【解决方案3】:

    试试这个方法

    @Html.DropDownList("Category", (SelectList)ViewBag.Category, "Select a Category")
    

    @Html.DropDownList("Category", ViewBag.Category as SelectList, "--Select a Category--")
    

    【讨论】:

      猜你喜欢
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多