0

我有一个模型视图,这个模型包含一个项目列表。

<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 简单地循环它。

问题是,当列表为空时,我希望有一个占位符字符串显示“无状态消息”。

我正在寻找一种方法来添加这个占位符,最好使用已经存在的模板显示。

4

3 回答 3

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 模板会为您迭代集合。

于 2017-02-10T08:10:16.057 回答
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>`
于 2017-02-10T08:11:08.377 回答
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>
于 2017-02-10T08:16:36.550 回答