如果需要内联 }

Inline if expected }

只是尝试在我的部分视图中添加内联,但一直期待}

每 5 件我都想要 table

@model IList<PAL.Intranet.Models.MonitorDetailModel>

<div>
    @for (int i = 0; i < @Model.Count(); i++)
    {
        <table>
            <tr>
                @if (i % 5 == 0)
                {
                    <tr>
                }

                <td><img src="@if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.OK)
                              { @PAL.Intranet.Models.AlertStateImage.OK }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Alert)
                              { @PAL.Intranet.Models.AlertStateImage.Alert }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Warning)
                              { @PAL.Intranet.Models.AlertStateImage.Warning }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Critical)
                              { @PAL.Intranet.Models.AlertStateImage.Error }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Error)
                              { @PAL.Intranet.Models.AlertStateImage.Error }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Unknown)
                              { @PAL.Intranet.Models.AlertStateImage.Unknown }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Online)
                              { @PAL.Intranet.Models.AlertStateImage.OK }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Offline)
                              { @PAL.Intranet.Models.AlertStateImage.Error }"                                
                          width="24" height="24"/></td>
                <td><b>@Model[i].Item:</b></td>
                <td style="padding:0 0 0 15px;">@Model[i].TaskItem.ToString():&nbsp;&nbsp;</td>
                <td>@if (@Model[i].Output != null)
                    { @Model[i].Output }
                    else
                    { @Model[i].AlertState.ToString() }</td>
                <td style="padding:0 0 0 15px;">Captured:&nbsp;&nbsp;</td>
                <td>@Model[i].Captured</td>

                @if (i % 5 == 0)
                {
                    </td>
                }

            </tr>
        </table>
    }
</div>

更新 1

仍在期待}。我想要的每 5 个项目都有 table.

@model IList<PAL.Intranet.Models.MonitorDetailModel>
<div>
    @for (int i = 0; i < @Model.Count(); i++)
    {
        @if (i == 0 | i % 5 == 0)
        {
            <table>
            <tr>
        }
            <td><img src="@if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.OK)
                            { @PAL.Intranet.Models.AlertStateImage.OK }
                            else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Alert)
                            { @PAL.Intranet.Models.AlertStateImage.Alert }
                            else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Warning)
                            { @PAL.Intranet.Models.AlertStateImage.Warning }
                            else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Critical)
                            { @PAL.Intranet.Models.AlertStateImage.Error }
                            else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Error)
                            { @PAL.Intranet.Models.AlertStateImage.Error }
                            else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Unknown)
                            { @PAL.Intranet.Models.AlertStateImage.Unknown }
                            else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Online)
                            { @PAL.Intranet.Models.AlertStateImage.OK }
                            else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Offline)
                            { @PAL.Intranet.Models.AlertStateImage.Error }"                                
                        width="24" height="24"/></td>
            <td><b>@Model[i].Item:</b></td>
            <td style="padding:0 0 0 15px;">@Model[i].TaskItem.ToString():&nbsp;&nbsp;</td>
            <td>@if (@Model[i].Output != null)
                { @Model[i].Output }
                else
                { @Model[i].AlertState.ToString() }</td>
            <td style="padding:0 0 0 15px;">Captured:&nbsp;&nbsp;</td>
            <td>@Model[i].Captured</td>

            @if (i == 0 | i % 5 == 0)
            {
                </tr>
                </table>
            }
    }
</div>

更新 3

期待 } 在第 1、1、3、39、39 行

@model IList<PAL.Intranet.Models.MonitorDetailModel>
<div>       
    @for (int i = 0; i < @Model.Count(); i++)
    {
        if (string.IsNullOrWhiteSpace(@Model[i].Output))
        {
            Model[i].Output = @Model[i].AlertState.ToString();
        }

        string image = string.Empty;
        switch (@Model[i].AlertState)
        {
            case PAL.Intranet.Models.AlertState.OK:
                image = PAL.Intranet.Models.AlertStateImage.OK;
                break;
            case PAL.Intranet.Models.AlertState.Warning:
                image = PAL.Intranet.Models.AlertStateImage.Warning;
                break;
            case PAL.Intranet.Models.AlertState.Critical:
                image = PAL.Intranet.Models.AlertStateImage.Error;
                break;
            case PAL.Intranet.Models.AlertState.Error:
                image = PAL.Intranet.Models.AlertStateImage.Error;
                break;
            case PAL.Intranet.Models.AlertState.Unknown:
                image = PAL.Intranet.Models.AlertStateImage.Unknown;
                break;
            case PAL.Intranet.Models.AlertState.Online:
                image = PAL.Intranet.Models.AlertStateImage.OK;
                break;
            case PAL.Intranet.Models.AlertState.Offline:
                image = PAL.Intranet.Models.AlertStateImage.Error;
                break;
            default:
                image = PAL.Intranet.Models.AlertStateImage.Unknown;
                break;
        }

        @if (i % 5 == 0)
        {
            <table>           
        }
        <tr>
        <td><img src="@image" width="24" height="24"/></td>
        <td><b>@Model[i].Item:</b></td>
        <td style="padding:0 0 0 15px;">@Model[i].TaskItem.ToString():&nbsp;&nbsp;</td>
        <td>@Model[i].Output</td>
        </tr>
        @if (i % 5 == 0)
        {
            </table>
        }
    }
</div>

您正在尝试每第 5 个项目添加一个 td,但在 if 列中您正在尝试初始化一个 tr,并在最后尝试关闭一个 td。根据发布的代码,标签不匹配。你能试试下面的代码吗?

@for (int i = 0; i < @Model.Count(); i++)
    {
        <table>
            <tr>
                @if (i % 5 == 0)
                {
                    <td>
                }

                <td><img src="@if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.OK)
                              { @PAL.Intranet.Models.AlertStateImage.OK }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Alert)
                              { @PAL.Intranet.Models.AlertStateImage.Alert }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Warning)
                              { @PAL.Intranet.Models.AlertStateImage.Warning }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Critical)
                              { @PAL.Intranet.Models.AlertStateImage.Error }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Error)
                              { @PAL.Intranet.Models.AlertStateImage.Error }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Unknown)
                              { @PAL.Intranet.Models.AlertStateImage.Unknown }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Online)
                              { @PAL.Intranet.Models.AlertStateImage.OK }
                              else if (@Model[i].AlertState == PAL.Intranet.Models.AlertState.Offline)
                              { @PAL.Intranet.Models.AlertStateImage.Error }"                                
                          width="24" height="24"/></td>
                <td><b>@Model[i].Item:</b></td>
                <td style="padding:0 0 0 15px;">@Model[i].TaskItem.ToString():&nbsp;&nbsp;</td>
                <td>@if (@Model[i].Output != null)
                    { @Model[i].Output }
                    else
                    { @Model[i].AlertState.ToString() }</td>
                <td style="padding:0 0 0 15px;">Captured:&nbsp;&nbsp;</td>
                <td>@Model[i].Captured</td>

                @if (i % 5 == 0)
                {
                    </td>
                }

            </tr>
        </table>
    }

您可以将剃须刀块与开关盒结合使用。

@{
    string imageSource = string.Empty;
    switch (Model[i].AlertState) { 
        case PAL.Intranet.Models.AlertState.OK:
            imageSource = PAL.Intranet.Models.AlertStateImage.OK ;
            break;
        case PAL.Intranet.Models.AlertState.Alert:
            imageSource = PAL.Intranet.Models.AlertStateImage.Alert
            break;
        ...
    }
}

<td><img src="@imageSource" width="24" height="24"/></td>

编辑

使用

@model IList<PAL.Intranet.Models.MonitorDetailModel>
<div>
    @for (int i = 0; i < @Model.Count(); i++)
    {
        string imageSource = string.Empty;
        switch (Model[i].AlertState) { 
            case PAL.Intranet.Models.AlertState.OK:
                imageSource = PAL.Intranet.Models.AlertStateImage.OK ;
                break;
            case PAL.Intranet.Models.AlertState.Alert:
                imageSource = PAL.Intranet.Models.AlertStateImage.Alert
                break;
            ...
        }

        @if (i % 5 == 0)
        {
            <table>           
        }
        <tr>
            <td><img src="@imageSource" width="24" height="24"/></td>
            <td><b>@Model[i].Item:</b></td>
            <td style="padding:0 0 0 15px;">@Model[i].TaskItem.ToString():&nbsp;&nbsp;</td>
            <td>@(Model[i].Output != null ? @Model[i].Output :@Model[i].AlertState.ToString())</td>
            <td>@Model[i].Captured</td>
        </tr>

        @if (i % 5 == 0)
        {             
            </table>
        }
    }
</div>

"problem" 你的代码是 Razor 试图找到 table 元素的结束标记,因为你实际上从来没有用好的语法关闭它,它表明你错过了结束for 循环和 table 标记中的括号。正如您所说,如果您删除 table 标签效果很好,那么为了避免剃刀尝试完成标签元素,因为 "error" 告诉您这是因为您没有结束标签,只需添加一个 @:<table></table> 之前,问题应该会消失。

当然你需要确保你的 html 代码没问题,因为你告诉 razor 它是一个字符串,而不是 table,但是在 HTML 中它会呈现作为 <table> 标签

 @model IList<PAL.Intranet.Models.MonitorDetailModel>
    <div>       
        @for (int i = 0; i < @Model.Count(); i++)
        {
            if (string.IsNullOrWhiteSpace(@Model[i].Output))
            {
                Model[i].Output = @Model[i].AlertState.ToString();
            }

            string image = string.Empty;
            switch (@Model[i].AlertState)
            {
                case PAL.Intranet.Models.AlertState.OK:
                    image = PAL.Intranet.Models.AlertStateImage.OK;
                    break;
                case PAL.Intranet.Models.AlertState.Warning:
                    image = PAL.Intranet.Models.AlertStateImage.Warning;
                    break;
                case PAL.Intranet.Models.AlertState.Critical:
                    image = PAL.Intranet.Models.AlertStateImage.Error;
                    break;
                case PAL.Intranet.Models.AlertState.Error:
                    image = PAL.Intranet.Models.AlertStateImage.Error;
                    break;
                case PAL.Intranet.Models.AlertState.Unknown:
                    image = PAL.Intranet.Models.AlertStateImage.Unknown;
                    break;
                case PAL.Intranet.Models.AlertState.Online:
                    image = PAL.Intranet.Models.AlertStateImage.OK;
                    break;
                case PAL.Intranet.Models.AlertState.Offline:
                    image = PAL.Intranet.Models.AlertStateImage.Error;
                    break;
                default:
                    image = PAL.Intranet.Models.AlertStateImage.Unknown;
                    break;
            }

            if (i % 5 == 0)
            {
                @:<table>           
            }
            <tr>
            <td><img src="@image" width="24" height="24"/></td>
            <td><b>@Model[i].Item:</b></td>
            <td style="padding:0 0 0 15px;">@Model[i].TaskItem.ToString():&nbsp;&nbsp;</td>
            <td>@Model[i].Output</td>
            </tr>
            if (i % 5 == 0)
            {
                @:</table>
            }
        }
    </div>

我知道这是一个很好的解决方案,但我的一个朋友曾经这样做过,这就是他解决该问题的方式。希望这有帮助