我想使用此InstitutionName作为查询显示搜索结果,但不是在每行重复出现在结果表中,我只想将其显示为标题。我尝试使用DisplayFor但它总是返回一个错误,我猜是因为我的模型是IEnumerable,但我不知道,我只是暂时放入DisplayNameFor来模拟我想要显示的输出,这应该是值该物业本身,而不仅仅是物业名称。
我读过有关使用ViewModel的内容,但我只是想知道我是否可以用现在的方式完成此任务。
查看
@model IEnumerable<SMOSystemv2.Models.Tender>
@{
ViewBag.Title = "Tenders";
}
<h1>Tender History</h1>
<h2>@Html.DisplayNameFor(model => model.Compendium.Institution.InstitutionName)</h2>
<table class="table">
<tr>
<th nowrap>
@Html.DisplayNameFor(model => model.Compendium.Institution.InstitutionName)
</th>
<th nowrap>
@Html.DisplayNameFor(model => model.Compendium.Qualification.Title)
</th>
<th nowrap>
@Html.DisplayNameFor(model => model.Slots)
</th>
<th nowrap>
@Html.DisplayNameFor(model => model.TotalAmount)
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td nowrap>
@Html.DisplayFor(modelItem => item.Compendium.Institution.InstitutionName)
</td>
<td nowrap>
@Html.DisplayFor(modelItem => item.Compendium.Qualification.Title)
</td>
<td nowrap>
@Html.DisplayFor(modelItem => item.Slots)
</td>
<td nowrap>
@Html.DisplayFor(modelItem => item.TotalAmount)
</td>
</tr>
}
</table>
答案 0 :(得分:0)
这是我最初使用@ Model.First()建议的那种显示,但强烈推荐实现ViewModel
@model IEnumerable<SMOSystemv2.Models.Tender>
@{
ViewBag.Title = "Tenders";
}
<h1>Tender History</h1>
<h2>@Model.First().Compendium.Institution.InstitutionName</h2>
<table class="table">
<tr>
<th nowrap>
@Html.DisplayNameFor(model => model.Compendium.Qualification.Title)
</th>
<th nowrap>
@Html.DisplayNameFor(model => model.Slots)
</th>
<th nowrap>
@Html.DisplayNameFor(model => model.TotalAmount)
</th>
<th nowrap>
@Html.DisplayNameFor(model => model.Semester)
</th>
<th nowrap>
@Html.DisplayNameFor(model => model.DateReceived)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td nowrap>
@Html.DisplayFor(modelItem => item.Compendium.Qualification.Title)
</td>
<td nowrap>
@Html.DisplayFor(modelItem => item.Slots)
</td>
<td nowrap>
@Html.DisplayFor(modelItem => item.TotalAmount)
</td>
<td nowrap>
@Html.DisplayFor(modelItem => item.Semester)
</td>
<td nowrap>
@Html.DisplayFor(modelItem => item.DateReceived)
</td>
<td nowrap>
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
@Html.ActionLink("Details", "Details", new { id = item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ID })
</td>
</tr>
}
</table>
答案 1 :(得分:0)
此属性返回选择为默认
的列表或选项的第一个选项 @if(Model != null){
<h2>@Model.FirstOrDefault().Compendium.Institution.InstitutionName</h2>
}
答案 2 :(得分:0)
尝试以下解决方案:
<h2>@Html.DisplayNameFor(@Model.FirstOrDefault().Compendium.Institution.InstitutionName)</h2>
而不是
<h2>@Html.DisplayNameFor(model=>model.Compendium.Institution.InstitutionName)</h2>
因为您在代码中使用了@model IEnumerable<SMOSystemv2.Models.Tender>
。属性FirstOrDefault()
将为您提供列表中的第一个值作为默认值。