剃刀和嵌套循环

use*_*035 1 asp.net-mvc razor asp.net-core-mvc

我刚刚开始学习 Razor,有一个关于嵌套循环的问题。

它使用以下代码正确呈现所有内容

@foreach (var group in Model.Groups)
{
    foreach (var item in group.Items)
    {
        <span>@item.Title</item>
    }
}
Run Code Online (Sandbox Code Playgroud)

但当我用“div”标签包装第二个 foreach 时却没有。它说在这种情况下 item 变量不存在。

@foreach (var group in Model.Groups)
{
    <div>
    foreach (var item in group.Items)
    {
        <span>@item.Title</item>
    }
    </div>
}
Run Code Online (Sandbox Code Playgroud)

我使用以下代码使其工作,但怀疑这是最好的解决方案

@foreach (var group in Model.Groups)
{
    @Html.Raw("<div>");
    foreach (var item in group.Items)
    {
        <span>@item.Title</item>
    }
    @Html.Raw("</div>");
}
Run Code Online (Sandbox Code Playgroud)

Tra*_*vis 5

@意思是“嘿,这是一些代码。” 如果您返回标记,则需要提醒 razor 有代码即将到来。我相信你想要的就是

@foreach (var group in Model.Groups)
{
    <div>
    @foreach (var item in group.Items)
    {
        <span>@item.Title</item>
    }
    </div>
}
Run Code Online (Sandbox Code Playgroud)