当使用if子句时,Razor不呈现

时间:2015-04-22 13:27:40

标签: asp.net-mvc razor

为什么razor html不起作用?

不工作

@if (Model.Devices.Any())
{

      foreach (var device in Model.Devices)
    {

        Html.Partial(MVC.Devices.Refrigerator.Views.GroupedRefrigerators, device);

    }
}
else
{
    <div class="alert alert-info">
        @(Html.Raw(xxxx)
    </div>
}

WORKS

  @foreach (var device in Model.Devices)
        {

            @Html.Partial(MVC.Devices.Refrigerator.Views.GroupedRefrigerators, device);

        }

1 个答案:

答案 0 :(得分:4)

当您在代码块中时,调用Html.Partial只会将结果字符串返回到内存。但是你没有存储它或用它做任何事情。

然而,调用@Html.Partial会将结果字符串注入页面。

您可以通过添加一些html元素来修复第一个块以包围部分:

foreach (var device in Model.Devices)
{
    <div>
        @Html.Partial(MVC.Devices.Refrigerator.Views.GroupedRefrigerators, device);
    </div>
}

正如@Richard指出的那样,你也可以使用@:<text>代替<div>来进行渲染。