Asp.net mvc 在cshtml中使用带变量的div标记周围的if-else语句

Asp.net mvc 在cshtml中使用带变量的div标记周围的if-else语句,asp.net-mvc,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 4,Razor,我目前很难成功地将以下代码添加到我的视图中,该视图是一个.cshtml文件 我有一个if和else语句,根据条件呈现不同的面板 我的代码如下: foreach (var item in groupItem) { @if (item.NextDue < DateTime.Today) { <div class="panel panel-danger" id="panel_@i"> } else { <div class=

我目前很难成功地将以下代码添加到我的视图中,该视图是一个.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">
   }
}
foreach(groupItem中的变量项)
{
@如果(item.NextDue
我在代码中尝试了大量的@{组合,但我认为问题在于ID也有@符号。如果我在foreach循环中注释掉代码,代码执行得很好。但是,将代码添加到foreach循环中会导致错误,即找不到foreach循环的“closing}”


如果您能帮助您执行此代码,我们将不胜感激。

问题是您有一个开始标记,但没有结束标记,因此razor不希望在那里有结束括号。当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>
   }
}
@foreach(groupItem中的变量项)
{
如果(item.NextDue
这就是你要做的

    @{
    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>
}
@{
int[]x=新的int[]{1,2,3,4};
字符串alertClass=“”;
}
@foreach(x中的变量y)
{
如果(y%2!=0)
{
alertClass=“面板信息”;
}
其他的
{
alertClass=“面板危险”;
}
一些文字
}

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

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

...

如果条件为真,If将使用面板危险。否则它将使用面板信息。

谢谢,但是,问题更多的是识别else语句和if语句的右括号。因此,这并不能解决这个问题。@i的使用是因为面板显示的是一个大数据集,并且面板需要与唯一的ID相关。我的目标是根据单独的条件渲染红色或蓝色面板。因此,在这种情况下,唯一id将被重用,因为这段代码依赖于foreach循环。那么……你是在问如何从foreach循环中获得唯一id吗?发布循环…如果您在数据集上循环,那么我将使用记录的主键作为面板id。目前,这段代码在我的视图中不起作用,即if closing{和else语句没有被读取为C#。我想知道如何将它们读取为C#。错误是“块缺少一个closing”}字符。如何消除此错误并执行此代码?您的页面中存在语法错误。检查代码块的嵌套。这个错误说明了一切……你在某个地方缺少了一个}或者你在某个地方有一个额外的{了。发布视图。我知道,但是如果我只注释掉我发布的代码片段,视图就会完美呈现,没有错误。
if
块中的
True
是什么(你声明了一个名为
True
的布尔变量吗?)什么是
i
-这是在循环中吗?True是我声明的布尔值的结果。实际代码是@if(过期==True),但认为这与主要问题无关。是的,这段代码在循环中,foreach(item)和i在每次执行这段代码后都会增加。它只需要是
@if(过期){..}
:)但是发布你的真实代码,包括循环。没有任何一点发布无法测试的代码,甚至不会编译你已经在一个剃刀块(每个
循环)中的代码,所以你不需要
@if(..
)-它应该是
if(..
。你能发布你得到的准确错误消息吗