在MVC4.0中使用分页实现类别/子类别有哪些更好的选择?

时间:2013-09-18 07:20:24

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我有一个要求,我必须实现 Paging 和当前页面记录。 该记录分类为 Category Sub Category ,如下所述。

如果 你注意截图,我必须实际显示当前页面的类别和子类别。现在,这是一个静态页面。

我们是否有任何内置功能/ Nuget有助于在MVC4中快速完成此任务。

enter image description here

1 个答案:

答案 0 :(得分:1)

老实说,这并不像你认为的那样糟糕。我通常会构建一个看起来像这样的输入模型。

 public class SearchModel {
      public string Query {get;set;}
      public string Sort {get;set;}
      public string Category {get;set;}
      public string SubCategory {get;set;}
      public int Page {get;set;}
      public int Size {get;set;}
      /* Has Properties */
      public bool HasCategory { get { return !string.IsNullOrWhitespace(Category); } }
      // etc...
 }

然后我使用NuGet中一个名为PagedList的库,但您可以使用任何ORM或非ORM编写自己的查询。然后我写了一个很好的小扩展方法来检查类别或子类别是否存在。

 /* I'm using EF ish code, but plug in your stuff here */
 public ActionResult Index(SearchModel search) {
    var results = Db.Certifications
                    .If(search.HasCategory, q => q.Where(x => x.Category == search.Category)
                    .If(search.HasSubCategory, q => q.Where(x => x.SubCategory == search.SubCategory)
                    .If(search.HasSort, q => q.OrderBy(/* whatever */)
                    .ToPagedList(page: search.Page, size: search.Size);

      return View(result);
 }

超级简单的解决方案,没有任何阻碍您的方式。

这是一个非常简单的问题需要解决,所以不要依赖任何可能会限制你的东西,或者以后会让你感到沮丧。