[asp.net-mvc]从 viewbag 列表中要用作多选选项组获得不同的值

发布时间: 2016/10/9 2:18:06
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

在我的控制器中,我定义︰

        private List<Store> GetStoreZoneList()
    {
        List<Store> stores = Store.GetList();
        stores = stores.OrderBy(b => b.Id).ToList();

        return stores;
    }

因为我然后传到我使用 viewbag 的视图︰

this.ViewBag.StoreZoneList = this.GetStoreZoneList();

在我看来,我想创建多选滴下来按 ZoneId 分组。 存储实体是连锁店的他们的区域列表。 我想要显示的店,不过按区域分组的列表。

<select>
@foreach (var group in this.ViewBag.StoreZoneList.Select(new {group:ZoneId}).Distinct())
{
    <optgroup label="@group">
    @foreach (var store in this.VewiBag.StoreZoneList.Where(r => r.ZoneId == group))
    {
        <option value="@Id">@Name</option>   
    }
    </optgroup>
}

我收到错误"'群' 当前上下文中不存在名称"和"'ZoneId' 在当前上下文中不存在名称"。 如何获取选项组的值列表

解决方法 1:

我最终回到我原来的结构。 我在控制器中加入区域列表︰

        private List<Zone> GetZoneList()
    {
        List<Zone> zones = Zone.GetList();
        zones = zones.OrderBy(b => b.Id).ToList();

        return zones;
    }

将其放入 viewbag,然后将它用于在我看来选项组︰

<select multiple="multiple" id="ZoneAutho" class="multiselect">
@foreach (var group in this.ViewBag.ZoneList)
{
    <optgroup label="Zone @group.Id">
    @foreach (var store in this.ViewBag.StoreZoneList)
    {
        if (store.ZoneId == group.Id) 
        {
            <option value="@store.Id"> @store.Id - @store.Name</option>   
        }
    }
    </optgroup>
}

赞助商