我目前无法成功将以下代码添加到我的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循环的“关闭”错误“
非常感谢能够执行此代码的任何帮助。
答案 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。