.net mvc5在select中显示不同的元素

时间:2014-06-20 15:16:42

标签: .net razor asp.net-mvc-5

我正在使用.net MVC5框架开发Web应用程序。我的视图从模型中获取信息,并在两个单独的选择元素中显示建筑类型和楼层数。但是,我只需要显示独特的建筑类型和楼层数信息。如果问题的图像![

,则在下方

我不知道该怎么做。这是该页面的代码:

@model IEnumerable<BIRDSResidential.Models.ResidentialBuilding>
@{
    ViewBag.Title = "ResidentialBuilding";
}

<div class="row">
    <div class="col-md-3">
        <select>
            @foreach (var item in Model)
            {
                <option value="">@Html.DisplayFor(modelItem => item.type)</option>
            }
        </select>
    </div>
    <div class="col-md-3">
        <select>
            @foreach (var item in Model)
            {
                <option value="">@Html.DisplayFor(modelItem => item.stories)</option>
            }
        </select>
    </div>
    <div class="col-md-offset-5 col-md-1">
        <button type="button" class="btn btn-default">
            <span class="glyphicon glyphicon-info-sign"></span>
        </button>
    </div>
</div

&GT;

修改

我将上面的代码更新为以下内容:

<div class="row">
    <div class="col-md-3">
        @Html.DropDownList("ResidentialBuilding", new SelectList(Model.Select(x => x.type).Distinct()))
    </div>
    <div class="col-md-3">
        @Html.DropDownList("ResidentialBuilding", new SelectList(Model.Select(x => x.stories).Distinct()))
    </div>
    <div class="col-md-3">
        @Html.DropDownList("ResidentialBuilding", new SelectList(Model.Select(x => x.size)))
    </div>
    <div class="col-md-offset-2 col-md-1">
        <button type="button" class="btn btn-default">
            <span class="glyphicon glyphicon-info-sign"></span>
        </button>
    </div>
</div>

这会适当地呈现信息,但不会向选项元素添加任何值属性。如果我在控制器中使用该行(如下所示),则distinct选项不起作用,但会将值添加到选项标记中。任何线索?

//ViewBag.ResidentialBuildings = new SelectList(db.ResidentialBuildings, "ID", "type");

1 个答案:

答案 0 :(得分:9)

不同的项目应该只是使用LINQ扩展.Distinct(再加上使用.Select来提炼到仅类型)。 e.g。

@foreach (var item in Model.Select(x => x.type).Distinct())
{
    <option value="">@Html.DisplayFor(x => item)</option>
}

但是,我会考虑使用Html.DropDownList帮助程序来简化生活:

@Html.DropDownList("", new SelectList(Model.Select(x => x.type).Distinct()))