[英]Display for template for an empty list
我有一個模型視圖,該模型包含一個項目列表。
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">@Resources.StatusMessage</h3>
</div>
@for (int i = 0; i < Model.StatusMessages.Count; i++)
{
@Html.DisplayFor(m => m.StatusMessages[i])
}
<div class="panel-footer">
@Html.ActionLink(Resources.AddStatusMessage, "AddStatusMessage", new {Id = Model.Id})
</div>
</div>
使用DisplayFor模板顯示此列表。 模板基於列表中的項目,而displayFor只是在其上循環。
問題是,當列表為空時,我希望有一個占位符字符串,上面寫着“無狀態消息”。
我正在尋找一種添加此占位符的方法,最好使用已經存在的模板顯示。
如果您使用模板,則可以更簡單地進行操作:
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">@Resources.StatusMessage</h3>
</div>
@if(Model.StatusMessages != null && Model.StatusMessages.Any())
{
@Html.DisplayFor(m => m.StatusMessages)
}
else
{
<p>No status messages</p>
}
<div class="panel-footer">
@Html.ActionLink(Resources.AddStatusMessage, "AddStatusMessage", new {Id = Model.Id})
</div>
</div>
您不需要循環,因為Razor模板為您迭代了集合。
你嘗試過以下風箱了嗎
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">@Resources.StatusMessage</h3>
</div>
@if(!Model.StatusMessages.Any()){@Html.DisplayFor(m => "Your string message here")}
@for (int i = 0; i < Model.StatusMessages.Count; i++)
{
@Html.DisplayFor(m => m.StatusMessages[i])
}
<div class="panel-footer">
@Html.ActionLink(Resources.AddStatusMessage, "AddStatusMessage", new {Id = Model.Id})
</div>
</div>`
一個簡單的If可以解決問題:
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">@Resources.StatusMessage</h3>
</div>
@{
if(Model.StatusMessages != null)
{
for (int i = 0; i < Model.StatusMessages.Count; i++)
{
@Html.DisplayFor(m => m.StatusMessages[i])
}
}
else
{
@Html.Display("No Status")
}
}
<div class="panel-footer">
@Html.ActionLink(Resources.AddStatusMessage, "AddStatusMessage", new {Id = Model.Id})
</div>
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.