0

我正在尝试生成一个 html 表,并且在每 25 行之后我想拆分它并开始一个新表。问题是 c# 能够在foreach循环中看到我的 html 代码,并将其视为损坏的代码。解决方法是什么?

@{
    int counter = 1;
    foreach (var collection in Model.Collections)
    {
        if (counter % 25 == 0)
        {
            </tbody></table>
                <table class='table table__next'> 
                  <tbody>
                <tr>
                    <td>37.18.3019</td>
                    <td>c21351900000055</td>
                    <td>nope</td>
                    <td>888ml</td>
                    <td>154.8 g/l</td>
                    <td>165/88</td>
                    <td>189754</td>
                    <td>9999/99 99.99.9999</td>
                </tr>
        } else {
                <tr>
                <td>37.18.3019</td>
                <td>c21351900000055</td>
                <td>nope</td>
                <td>888ml</td>
                <td>154.8 g/l</td>
                <td>165/88</td>
                <td>189754</td>
                <td>9999/99 99.99.9999</td>
            </tr>
        }
            counter++;
    }
}

当前结果:https ://prnt.sc/pvw1st

4

3 回答 3

2

尝试使用 Html.Raw("</tbody></table>")

使用 Html.Raw() 函数,您可以将任何字符串写入 html,而不会出现解析错误。

于 2019-11-12T13:19:50.160 回答
1

你可以使用@Html.Raw

<table>
<tbody>       
@{
        int counter = 0;
        foreach (var collection in Model.Collections)
        {
            if (counter % 25 == 0)
            {
                @Html.Raw("</tbody></table><table><tbody>");
            }
            <tr>
                <td>37.18.3019</td>
                <td>c21351900000055</td>
                <td>nope</td>
                <td>888ml</td>
                <td>154.8 g/l</td>
                <td>165/88</td>
                <td>189754</td>
                <td>9999/99 99.99.9999</td>
            </tr>
            counter++;
        }
    }
</tbody>
</table>
于 2019-11-12T13:34:45.313 回答
0

您可以使用语法@:<text>标签向 Razor 引擎指示这是要发出的内容,而不是服务器端代码。例如:

if (counter % 25 == 0)
{
    <text>
        </tbody></table>
        <table class='table table__next'> 
            <tbody>
                <tr>
                    <td>37.18.3019</td>
                    <td>c21351900000055</td>
                    <td>nope</td>
                    <td>888ml</td>
                    <td>154.8 g/l</td>
                    <td>165/88</td>
                    <td>189754</td>
                    <td>9999/99 99.99.9999</td>
                </tr>
    </text>
}

或者:

if (counter % 25 == 0)
{
    @:</tbody></table>
    @:<table class='table table__next'> 
    @:    <tbody>
    @:        <tr>
    @:            <td>37.18.3019</td>
    @:            <td>c21351900000055</td>
    @:            <td>nope</td>
    @:            <td>888ml</td>
    @:            <td>154.8 g/l</td>
    @:            <td>165/88</td>
    @:            <td>189754</td>
    @:            <td>9999/99 99.99.9999</td>
    @:        </tr>
}

(后者通常仅用于单行输出,而前者用于较大的块,但为了完整起见,两者都在此处显示。)

要在这些块中使用服务器端代码,您将使用与@任何地方相同的语法:

<text>
    <p>This is a server-side value: @myValue</p>
</text>
于 2019-11-12T13:42:50.847 回答