我有一个要求,我必须实现 Paging 和当前页面记录。 该记录分类为 Category 和 Sub Category ,如下所述。
如果 你注意截图,我必须实际显示当前页面的类别和子类别。现在,这是一个静态页面。
我们是否有任何内置功能/ Nuget有助于在MVC4中快速完成此任务。
答案 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);
}
超级简单的解决方案,没有任何阻碍您的方式。
这是一个非常简单的问题需要解决,所以不要依赖任何可能会限制你的东西,或者以后会让你感到沮丧。