2015-04-21 47 views
0

我想創建一個包含大約5,000行的html表格。 我檢索從它在不到一秒鐘抓住了一個SQL數據庫中的數據(IVE只包括相關的代碼):在剃刀C中渲染HTML表格的最有效方式是什麼?

ViewBag.Jobs = dbContext.Jobs.Where(a=>a.State == "Completed"); 

這一呼籲是不夠快。

但是瓶頸是在剃刀代碼:

<table> 
<tbody> 
@foreach (Job job in jobs) 
{ 
    <tr> 
     <td>@job.id</td> 
     <td>@job.Name</td> 
     <td>@job.Description</td> 
    </tr> 
} 

有渲染HTML表格更有效的方法?我知道我可以轉換爲使用類,但我不相信它會有明顯的區別?

+2

你確定瓶頸是用Razor生成表格,而不是瀏覽器試圖渲染它嗎?這是一張非常大的桌子。 –

+0

也許在Web API控制器中使用它,並用JavaScript中的$ .JSON調用數據?這將取決於你的環境以及你被允許改變的程度。您還可以限制在表格中顯示的記錄數量。 5000條記錄看起來有點瘋狂。 –

+0

您無需調用.ToList()。這樣做會迫使列表在內存中實現,您不使用它。只要將它保留爲'IEnumerable '。 –

回答

0

5000行是很多要顯示在瀏覽器上的行。 您採取的任何方法都需要遍歷行以生成輸出,因此您可能需要考慮使用某種分頁來呈現數據。

使用HTML解析器像KnockoutJS或您的元素綁定AngularJS將有助於使頁面比這個速度更快...

或者你可以考慮使用一些Ajax調用,並在頁面加載後呈現數據。

+1

'使用像KnockoutJS或AngularJS這樣的html解析器來綁定你的元素將有助於渲染頁面比這個更快...'References/proof? –

+0

是阿賈克斯是我的計劃B.我的計劃是呈現5000行,隱藏我需要顯示的行。所以它使得即時搜索 – michael

+1

@EricJ。像這樣使用Razor視圖意味着輸出html的生成發生在服務器端,然後生成的html將被下載到瀏覽器中並進行渲染,在html解析中,html模板(未填充)+ json數據將被下載到瀏覽器中,然後html解析器將生成內容。所以在剃刀視圖的情況下,正在下載到瀏覽器的html大小比我們僅將json和html模板發送到瀏覽器的情況要高得多。 – Aram

相關問題