【问题标题】:How do I display things only once in a cshtml file如何在cshtml文件中只显示一次
【发布时间】:2019-06-24 19:31:28
【问题描述】:

我正在做一个 ASP.NET 项目,我以前从未使用过这个项目,我在一个 cshtml 文件中遇到问题,首先我知道我有一个 foreach 并且值会出现不止一次,但是如果我将 @Html.LabelFor 和 @Html.DisplayNameFor 放在 foreach 之外并创建另一个变量,代码不起作用,我只想显示一次,我不知道该怎么做

@foreach (var pap in Model.PessoasEpisodios)
{

    <tr>
        <th>
            @Html.LabelFor(a => pap.Episodios.Temporadas.Series.Nome, "Nome Série")

        </th>
        <th>

            @Html.LabelFor(a => pap.Episodios.Temporadas.Nome, "Nome Temporada")
        </th>
        <th>
            @Html.DisplayNameFor(a => pap.Episodios.Nome)
        </th>
        <th>
            @Html.DisplayNameFor(a => pap.Papel)
        </th>
    </tr>


    <tr>
        <td>
            @Html.DisplayFor(a => pap.Episodios.Temporadas.Series.Nome)
        </td>
        <td>
            @Html.DisplayFor(a => pap.Episodios.Temporadas.Nome)
        </td>
        <td>
            @Html.DisplayFor(a => pap.Episodios.Nome)
        </td>
        <td>
            @Html.DisplayFor(a => pap.Papel)
        </td>
    </tr>
}

【问题讨论】:

  • “不起作用”是什么意思?请具体说明您尝试了什么以及遇到了什么错误。
  • 对不起,但我是新来的,当我声明变量时我没有那么具体,我需要指定我在 foreach 中指定的相同内容?我的意思是:“在 Model.PessoasEpisodios 中”?
  • 在这种情况下,您需要一个模态中的 2 个模态,其中模态包含您的显示名称和列表,因此您可以像这样显示 @html.displayfor( m => m.propertyname) @forreach() { }
  • 所以你可以将@html.display 放在循环之外,它只会显示一次

标签: asp.net-mvc razor model-view-controller


【解决方案1】:

Model.PessoasEpisodios 在您的情况下链接到列表或可枚举,它不存储您要访问的属性。这意味着您要访问的属性确实存在于它所拥有的项目中。因此,为了访问它,您可以获取列表的第一个索引,并显示其属性(您的所有列表迭代都有这些,但假设您的列表中有项目,这可能是最安全的)。

据我所知,这是唯一的方法。

<th>
     @Html.DisplayNameFor(a => pap.Episodios[0].Nome)
</th>

编辑: 在这种情况下,您也可以使用SingleSingleOrDefault,而不是[0]。基本上都差不多。

【讨论】:

  • 在通过索引访问剧集之前,您应该检查以确保该索引存在对象,这样您就不会收到 NullReferenceException。
  • 因此假设您的列表点中有一个项目。我个人会事先检查并继续不显示所有表格,但这完全是您自己的偏好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-05
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多