如何在cshtml文件中仅显示一次

时间:2019-06-24 19:31:28

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

我正在做一个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>
}

1 个答案:

答案 0 :(得分:0)

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

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

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

编辑: 在这种情况下,您也可以使用SingleSingleOrDefault代替[0]。基本上是同一件事。