3 Stimmen

Um umfassende Sortier-/Paginierungs-/Filterdienste-Schnitstelle-Methode

Ich versuche, eine Service-Layer-Methode zu schreiben, die alle notwendigen Parameter übernehmen soll, um Daten aus dem Repository auf die Art und Weise abzurufen, wie ein Webforms-Raster funktionieren würde.

Das Repository gibt IQueryable zurück.

Ich habe ein Modell wie dieses entwickelt:

public class PagedModel
{
    public GridSortOptions GridSortOptions { get; set; } //Enum für ASC und DESC
    public IList Items { get; set; }
    public int Page { get; set; }
    public int PageSize { get; set; }
}

Die Methode:

PagedModel GetUsers(Expression> predicate, int page, int pageSize, GridSortOptions sortOption);

Fragen:

  1. Welche Parameter fehlen mir in dieser Methode?
  2. Welche Eigenschaften fehlen mir im PagedModel?
  3. Wie implementiere ich die Methode?

Was ich möchte:

  1. Paging
  2. Sorting
  3. Filtering

1voto

JeremyWeir Punkte 23702

Manchmal finde ich es schön, eine "Criteria" Klasse zu erstellen, die alle Eigenschaften separat von der Liste der gesuchten Elemente enthält. Auf diese Weise können Sie es als Modell-Eigenschaft verwenden, die automatisch an Ihre Suchaktionen gebunden wird, es an Service- und Repository-Methoden übergeben (anstatt einer Vielzahl von separaten Parametern), es bei Bedarf in der Sitzung speichern, stark typisierte Filtereigenschaften haben, die spezifisch für den aktuellen Typ sind, nach dem Sie suchen (d.h. Benutzer), eine Oberklasse für die Aufbewahrung von generischen Paging- oder Sortierungseigenschaften.

Etwas in der Art

public class UserCriteria
{
    public GridSortOptions GridSortOptions { get; set; } //Enum für ASC und DESC
    public int Page { get; set; }
    public int PageSize { get; set; }
    public bool? IsActive { get; set; }
    public string UserName { get; set; }
}

0voto

Simon Hazelton Punkte 1235

Ich habe gerade die Telerik MVC-Komponenten verwendet, sie sind Open Source und kostenlos. Das Schönste, was ich gerade gefunden habe, ist, dass wenn Sie IQueryable als Ihre Datenquelle verwenden, es Ihnen automatisch...

...Paging, Sorting, Filtering und Grouping (sicherlich gibt es einige Teile, die ich ausgelassen habe) direkt out of the box zur Verfügung stellt!

Es könnte sich lohnen, sie anzusehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X