4

ページングと現在のページのレコードを実装する必要があるという要件があります。レコードは、以下のようにカテゴリサブカテゴリに分類されます。

スクリーンショットに注目すると、現在のページのカテゴリとサブカテゴリを実用的に表示する必要があります。現在、これは静的ページです。

MVC4 でこのことをすばやく達成するのに役立つ組み込みの機能/Nuget はありますか。

ここに画像の説明を入力

4

1 に答える 1

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);
 }

非常にシンプルなソリューションで、邪魔になるものは何もありません。

これは解決するのが非常に簡単な問題なので、あなたを拘束したり、後でイライラさせたりする可能性のある重すぎるものに頼らないでください.

于 2013-09-18T15:04:31.053 に答える