我正在使用.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");
答案 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()))