簡體   English   中英

在ASP.NET MVC中進行排序,篩選和分頁

[英]Sorting, Filtering and Paging in ASP.NET MVC

實現這些功能的最佳方法是什么?項目的哪一部分會涉及?

我看到了一些JavaScript網格示例,但是我在談論的是最適合MVC架構的通用方法。

我已經考慮過配置路由和模型以實現這些功能,但是我不知道這是否是實現這些功能的正確方法。 一方面,我認為如果將邏輯放在路線(項目/頁面/排序/)中,我們將獲得諸如添加書簽和避免使用JavaScript的好處。 另一方面,如果我們使用JavaScript網格,則可以在ASP.NET Web表單中具有類似於舊式網格視圖的行為。

我發現使用HTML幫助程序可能對分頁很有用,但是不知道它們是否適合排序。 我看過jQuery, tableSorter快速搜索插件,但它們僅適用於當前獲取的數據,不會幫助進行可能需要接觸數據庫的實際排序和過濾。 對於將這些工具與AJAX並用,我有一些想法,但是我不知道是否在任何地方都做了類似的工作。

我研究過的另一種方法是在Web表單上使用動態數據,但是我沒有發現關於將MVC和DD集成是否是一個好主意的建議。 我知道為單個案例實現過濾和排序很簡單(盡管它有一些問題,例如使用Dynamic LINQ,這還不是一種標准方法),但是我創建一個在所有情況下都可以使用的排序或過濾工具尋找。 (也許這是因為當Web表單開發人員想知道為什么每次我想為不同的實體實現排序方案時,為什么要編寫相同的代碼時,我都希望掌握一些東西)。

這是我基於jqGrid的解決方案: http ://sprokhorenko.blogspot.com/2010/01/jqgrid-mvc-new-version-sources.html

它是S#arp Architecture和NHibernate特有的,所以我不確定它是否適合您的需求。 但是它是模塊化的,因此例如可以很容易地調整基礎存儲庫的實現。

基本上,它只是具有所有優點和缺點的jqGrid,但已集成到MVC中:

  1. 使用ViewModel上的屬性控制所有格式和編輯
  2. 自動請求,排序/過濾/分頁處理
  3. 自動CRUD處理
  4. 可以處理基於數據庫和基於列表的存儲庫
  5. 沒有可收藏的路線/鏈接...

您所需要做的就是為ViewModel提供屬性,並覆蓋幾個模板CRUD方法(可以與InternalConstructEntity()一樣少。

您可以查看MVContrib,它們具有很好的網格支持。 http://www.codeplex.com/MVCContrib

對於LOB應用程序,Telerik控件可能是一個很好的解決方案。

我個人使用jQuery DataTables 它非常簡單,並且具有定義明確的服務器端請求。 我已經用C#和MVC為jQuery DataTables編寫了一個插件 它使用標准的jQuery DataTables請求並相應地處理IQeryable實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM