1

好吧,我很容易有一个模型:

@model IEnumerable<CompanyWebSite.Category>

迭代它的项目并创建一个每行一个项目的表来显示它们是非常简单的。

问题是我想创建一个这样的表:

<table>
    <tr>
        <td></td>
        <td></td>
    </tr>
    //
    // ...
    //
    <tr>
        <td colspan="2"> ... LastItem ...</td>
    </tr>
</table>

看似简单,但我做不到……!

@{
ViewBag.Title = "Products";
var last = Model.Last();
int i = 1;
}

<table id="tblCats">
@foreach(var item in Model)
{                        
    if (i == 1){
        <tr>
        @(i = 2)
    }

        @if (!item.Equals(last))
        {                                            
            <td>
                <a href="#"><h4>@item.CategoryName</h4></a>
                <label>@item.Description</label>
            </td>   
            if (i == 2)
            {
                </tr>
                i = 1;
            }
            else
                i = 2;         
        }
        else
        {
            <td colspan="2">

            </td>
            </tr>
        }                                                                                                  
}

因为第一个开头<tr>,Razor 很困惑,看不到结尾}else陈述……我该怎么办……?!


改进表格渲染,最快的表格渲染

所以我必须渲染一个有 1000 行和 1000 列的表。因此,这个 链接,似乎最好的方法是在 javascript 中构建 HTML 字符串,然后一次性将其插入到 DOM 中。我为此做了一个简单的例子,并将其与其他几种方法进行比较。最后,这真的是我想出来的最快的方法。但这仍然不够令人满意。所以我的问题是,有没有比下面的例子更快的方法。

var startTime = new Date().getTime(),
    tableString = "<table>",
    body = document.getElementsByTagName('body')[0],
    div = document.createElement('div'),
    finalResult = 0,
    endTime = 0,
    result = 0;

for (row = 0; row < 1000; row += 1) {

    tableString += "<tr>";

    for (col = 0; col < 1000; col += 1) {

        tableString += "<td>" + "testing" + "</td>";
    }
    tableString += "</tr";
}

tableString += "</table>";
div.innerHTML = tableString;
body.appendChild(div);

endTime  = new Date().getTime();
console.log(endTime - startTime);
4

1 回答 1

1

您可以使用HtmlHelper.Raw 方法来帮助剃须刀

于 2013-08-06T06:39:29.450 回答