我有一个模型视图,这个模型包含一个项目列表。
<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只是循环遍历它。
问题是,当列表为空时,我想要一个占位符字符串,上面写着“没有状态消息”。
我正在寻找一种方法来添加此占位符,最好使用现有的模板显示。
答案 0 :(得分:1)
如果您使用模板,则可以更简单:
<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模板迭代收集你。
答案 1 :(得分:1)
你试过了吼叫吗
<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>`
答案 2 :(得分:1)
一个简单的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>