[英]Partial views with null models
我有一個視圖,包含許多較小的部分視圖,以顯示許多不同類型的表格數據。
它使用包含許多子模型的模型。 例如,教室將成為模型,學生將成為子模型或嵌套類。
有時課程不會包含任何學生。 因此,無數學生將無效。 問題是partials不允許null對象因此拋出異常。
這是一個例子....
主要觀點:
@Html.Partial("Partials/_Students", Model.Students)
局部視圖
<div class="col-xs-12 col-sm-5 col-md-5 col-lg-5 widget-container-span">
<div class="widget-box">
<div class="widget-header header-color-dark">
<h5 class="bigger lighter">
<i class="icon-table"></i>
Notes
</h5>
<div class="widget-toolbar">
<a class="plus-sign-link" href ="@Url.Action("AddNewStudent", "Classroom")"><i class="icon-plus-sign bigger-170"></i></a>
</div>
</div>
<div class="widget-body">
<div class="widget-main no-padding">
<table class="table table-striped table-bordered table-hover" data-provides="rowlink">
<thead class="thin-border-bottom">
<tr>
<th><i class="icon-user"></i>Contact Name</th>
<th>Email </th>
<th>Telephone</th>
<th class="hidden-480">Mobile</th>
<th class="hidden-480"></th>
</tr>
</thead>
@foreach (var item in Model)
{
<tbody data-link="row" class="rowlink">
<tr>
<td>
<a href="@Url.Action("Classroom", "StudentDetails", new { @siteid = item.SiteId, @id = item.Id })">@item.Name</a>
</td>
<td class="rowlink-skip">
<a href="mailto:@item.EmailAddress">@item.EmailAddress</a>
</td>
<td class="rowlink-skip">
<a href="tel:@item.TelephoneNumber">@item.TelephoneNumber</a>
</td>
<td class="hidden-480 rowlink-skip">
<a href="tel:@item.MobileNumber">@item.MobileNumber</a>
</td>
<td class="hidden-480 rowlink-skip">
@if (item.IsDefault)
{ <span style="display: block;" class="label label-success">Default</span> }
else
{ <a style="display:block;" class="btn btn-minier btn-info" data-id="@item.Id">Make default</a> }
</td>
</tr>
</tbody>
}
</table>
</div>
</div>
</div>
是否有允許這樣的擴展?
有幾個選項,您可以使用空列表初始化您的模型,或者在您擁有呈現部分代碼的HTML中,只需執行空檢查,如果有如下值,則僅渲染部分:
@if(Model.Students != null && Model.Students.Any()){
@Html.Partial("Partials/_Students", Model.Students)
}
如果沒有學生並且您想要通知最終用戶,這使您可以選擇呈現不同的部分:
@if(Model.Students != null && Model.Students.Any()){
@Html.Partial("Partials/_Students", Model.Students)
} else {
@Html.Partial("Partials/_NoStudents")
}
您可以添加條件以在主視圖中檢查子模型是否為空/空,如下所示:
@if(Model.Students != null && Model.Students.Any()){
@Html.Partial("Partials/_Students", Model.Students)
}
或者您可以在部分視圖中添加條件。
主視圖
@Html.Partial("Partials/_Students", Model.Students)
PartialView
@if(Model != null && Model.Any())
{
// HTML code of Partial View
}
else
{
//Message to display no student record found.
}
確保你的IEnumerable模型不是null ...說出類似的東西
@if(Model != null)
{
// render partial view
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.