我有一个要求,我必须实现分页和当前页面记录。记录分为类别和子类别,如下所述。
如果您注意屏幕截图,我必须务实地显示当前页面的类别和子类别。现在,这是一个静态页面。
我们是否有任何内置功能/Nuget 可以帮助在 MVC4 中快速完成这件事。
我有一个要求,我必须实现分页和当前页面记录。记录分为类别和子类别,如下所述。
如果您注意屏幕截图,我必须务实地显示当前页面的类别和子类别。现在,这是一个静态页面。
我们是否有任何内置功能/Nuget 可以帮助在 MVC4 中快速完成这件事。
老实说,这并没有你想象的那么糟糕。我通常会构建一个看起来像这样的输入模型。
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);
}
超级简单的解决方案,没有什么能真正妨碍您。
这是一个非常容易解决的问题,所以不要依赖任何太重的东西,这可能会限制你或让你以后感到沮丧。