Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC Razor,将if语句添加到foreach循环_Asp.net Mvc_Razor_If Statement_Foreach - Fatal编程技术网

Asp.net mvc MVC Razor,将if语句添加到foreach循环

Asp.net mvc MVC Razor,将if语句添加到foreach循环,asp.net-mvc,razor,if-statement,foreach,Asp.net Mvc,Razor,If Statement,Foreach,我正在尝试使用razor将模型中的数据添加到表中。我的问题是,我需要一个if语句来决定tagg应该是什么类,但我无法让它工作 当我添加代码时,如果在运行代码时出现以下错误 The foreach block is missing a closing "}" character 如何添加if语句?这是我当前的代码 @{ var counter = 0; } @foreach (var item in Model) { if(item.status

我正在尝试使用razor将模型中的数据添加到表中。我的问题是,我需要一个if语句来决定tagg应该是什么类,但我无法让它工作

当我添加代码时,如果在运行代码时出现以下错误

The foreach block is missing a closing "}" character
如何添加if语句?这是我当前的代码

@{
      var counter = 0;            
}
@foreach (var item in Model)
{
       if(item.status == "Active") {
           <tr>
       }
       else {
           <tr class="danger">
       }
       <td>@counter</td>
       <td>@item.FirstName @item.LastName</td>
       <td>@item.Email</td>
       <td>@item.PhoneNumber</td>
       <td>Ändra</td>
       <td>Inaktivera</td>
        </tr>     
counter++;
}
@{
var计数器=0;
}
@foreach(模型中的var项目)
{
如果(item.status==“活动”){
}
否则{
}
@柜台
@item.FirstName@item.LastName
@邮件
@item.PhoneNumber
Ändra
Inaktivera
计数器++;
}

MVC应该检测html标记并将其呈现出来,但这似乎并不总是有效的

在花括号之间,尝试添加标记

例如:

{
你的html
} 

如果只是添加类,请尝试以下操作:

<tr @(item.status == "Active" ? String.Empty : "class=\"danger\"" )>

尝试下面的代码

@{
    var counter = 0;            
}
@foreach (var item in Model)
{
       if(item.status == "Active") {
          <text> <tr> </text>
       }
       else {
           <text><tr class="danger"></text>
       }
       <td>@counter</td>
       <td>@item.FirstName @item.LastName</td>
       <td>@item.Email</td>
       <td>@item.PhoneNumber</td>
       <td>Ändra</td>
       <td>Inaktivera</td>
        </tr>     
    counter++;
}
@{
var计数器=0;
}
@foreach(模型中的var项目)
{
如果(item.status==“活动”){
}
否则{
}
@柜台
@item.FirstName@item.LastName
@邮件
@item.PhoneNumber
Ändra
Inaktivera
计数器++;
}

您可以添加扩展方法,根据需要使用bool或string

public static class HtmlHelpExtention
        {  
          public static string IsChecked(this IHtmlHelper htmlHelper,bool IsCheck, string className)
            {
                return IsCheck? className:"";
            }
         }
然后在视图中使用它

<tr class="@Html.IsChecked(item.IsGift,"teal accent-3")">


使用此方法将使您能够使用多个类

MVC检测HTML标记。所以它不会像那样添加if语句。 您也不能使用

您需要检查
标记本身中的条件。见下面给出的结果

                          @{
                            var counter = 0;
                            }
                            <table>
                                @foreach (var item in Model)
                                {
                                <tr @(item.status=="Active" ? String.Empty : "class=\" danger\"")>
                                    <td>@counter</td>
                                    <td>@item.FirstName @item.LastName</td>
                                    <td>@item.Email</td>
                                    <td>@item.PhoneNumber</td>
                                    <td>Ändra</td>
                                    <td>Inaktivera</td>
                                </tr>
                                counter++;
                                }
                            </table>
@{
var计数器=0;
}
@foreach(模型中的var项目)
{
@柜台
@item.FirstName@item.LastName
@邮件
@item.PhoneNumber
Ändra
Inaktivera
计数器++;
}

Love Pandey解决方案适用于我,但只适用于一个类名。对于多个类名,浏览器将第二个名称解释为单独的属性。我对它的修改如下:

    @{
        var counter = 0;
    }
    <table>
        @foreach (var item in Model)
            string className = item.status=="Active" ? String.Empty : "item second-class-name";
            {
                <tr class="@className">
                <td>@counter</td>
                <td>@item.FirstName @item.LastName</td>
                <td>@item.Email</td>
                <td>@item.PhoneNumber</td>
                <td>Ändra</td>
                <td>Inaktivera</td>
                </tr>
                counter++;
             }
         </table>
@{
var计数器=0;
}
@foreach(模型中的var项目)
字符串className=项目。状态==“活动”?String.Empty:“项目第二类名称”;
{
@柜台
@item.FirstName@item.LastName
@邮件
@item.PhoneNumber
Ändra
Inaktivera
计数器++;
}

对于我当前版本的MVC*3.2.3),我需要使用此语法,因为引号会自动添加。但是谢谢你的提示!
    @{
        var counter = 0;
    }
    <table>
        @foreach (var item in Model)
            string className = item.status=="Active" ? String.Empty : "item second-class-name";
            {
                <tr class="@className">
                <td>@counter</td>
                <td>@item.FirstName @item.LastName</td>
                <td>@item.Email</td>
                <td>@item.PhoneNumber</td>
                <td>Ändra</td>
                <td>Inaktivera</td>
                </tr>
                counter++;
             }
         </table>