在cshtml

时间:2015-08-09 01:06:37

标签: asp.net-mvc asp.net-mvc-4 razor

我目前无法成功将以下代码添加到我的View中,这是一个.cshtml文件。

我有一个if和else语句,根据条件呈现不同的面板。

我的代码如下:

foreach (var item in groupItem)
{
   @if (item.NextDue < DateTime.Today)
   {
     <div class="panel panel-danger" id="panel_@i">
   }
     else
   {
     <div class="panel panel-info" id="panel_@i">
   }
}

我已经尝试了很多@ {围绕代码的组合,但我认为问题是ID也有@符号。如果我在foreach循环中注释掉代码,代码执行正常。但是,将代码添加到foreach循环会导致找不到foreach循环的“关闭”错误“

非常感谢能够执行此代码的任何帮助。

3 个答案:

答案 0 :(得分:4)

你就是这样做的......

    @{
    int[] x = new int[] { 1, 2, 3, 4 };
    string alertClass = "";
}
@foreach (var y in x)
{
    if (y % 2 != 0)
    {
        alertClass = "panel-info";
    }
    else
    {
        alertClass = "panel-danger";
    }
    <div id="panel_@y" class="panel @alertClass">Some Text_@y</div>
}

答案 1 :(得分:1)

问题是你有一个起始<div>标签,但没有结束标签,所以剃刀不希望那里有结束标记。您可以使用<text>标记来指定当razor解析它时遇到的内容:

@foreach (var item in groupItem)
{
   if (item.NextDue < DateTime.Today)
   {
     <text><div class="panel panel-danger" id="panel_@i"></text>
   }
     else
   {
     <text><div class="panel panel-info" id="panel_@i"></text>
   }
}

答案 2 :(得分:0)

如果只需要根据条件更改面板颜色,则可以执行以下操作:

<div class="panel @(item.NextDue < DateTime.Today ? "panel-danger" : "panel-info")">
    ...
</div>

如果条件为真,则使用面板危险。否则它将使用panel-info。