【问题标题】:DropDownList From Objects MVC来自对象 MVC 的 DropDownList
【发布时间】:2013-05-19 15:44:47
【问题描述】:

好的,我想从我的对象列表中创建一个DropDownList 这是我获取对象的方法

public List<Category> GetCategoriesList()
{
    BaseShopEntities context = new BaseShopEntities();
    List<Category> uniqCategories = (from c in context.Category
                                             select c).Distinct().ToList<Category>();

    return uniqCategories;
}

我试图像这样将它放入ViewBag

ViewBag.Categories = proxy.GetCategoriesList().ToList();

如果我只取类别的名称并将其解析为字符串没有问题,但我也需要 ID

我想得到这样的数据,但不知道如何

@Html.DropDownList("CategoryID", new SelectList(ViewBag.Categories.Name));

【问题讨论】:

    标签: asp.net-mvc razor html-select viewbag


    【解决方案1】:

    首先,GetCategoriesList 已经返回了一个 List,所以在添加到 ViewBag 时不需要ToList

    ViewBag.Categories = proxy.GetCategoriesList();
    

    其次,为了创建具有独立名称和值的 DropDownList,您需要 SelectList 构造函数的以下重载:

    SelectList(IEnumerable, String, String)
    

    在这里,您指定用于填充 SelectList 的列表以及两个字符串,其中第一个是列表中元素的 value 字段的名称,第二个是文本字段的名称。然后使用反射检索这些字段的值。在你的情况下,它可能看起来像这样:

    @Html.DropDownList("CategoryID",
        new SelectList(ViewBag.Categories, "Id", "Name"));
    

    在这里,我假设每个类别都有一个Id 字段和一个Name 字段。如果这些字段名称不正确,您需要相应地更改传递给SelectList 构造函数的字符串。

    附带说明:您应该为与您的数据库实体类分开的类别创建一个单独的视图模型,并改为创建一个列表。您的视图不应直接访问您的数据实体。

    【讨论】:

    • 节省了我的时间。像魅力一样工作
    猜你喜欢
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多