Domanda

ho impostato un semplice sistema di paginazione nella mia app che utilizza l'idea del tutorial nerddinner, utilizzando la classe elenco impaginato:

   public class PaginatedList<T> : List<T>    {
        public int PageIndex {}
        public int PageSize {}
        public int TotalCount {}
        public int TotalPages {}

        public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize){}

        public bool HasPreviousPage {}

        public bool HasNextPage {}  }

Il paging funziona e lo sto usando per ottenere le tabelle lunghe dal database tramite LINQ2SQL, come in questa azione del controller:

  public ActionResult Index(int page=0)
    {
        const int pageSize = 10;

        var source = repo.SvaMjesta();
        var paginatedList = new PaginatedList<Mjesto>(source, page, pageSize);

        return View(paginatedList);
    }

L'impaginazione funziona correttamente, posso accedere a qualsiasi pagina purché utilizzo il tipo di query o URL: / Admin / Mjesta? page= 2
È qualcosa che vorrei evitare e vorrei utilizzare un URL semplice come: / Admin / Mjesta / Page / 2

A tale scopo ho inserito questa voce nel mio AdminAreaRegistration.cs

       context.MapRoute(
            "pMjesta",
            "Admin/Mjesta/Page/{page}",
            new {controller = "Mjesta", action = "Index"});

Ma quando provo ad accedere a URL come / Admin / Mjesta / Page / 2 , viene comunque visualizzato un errore 404.

La mia idea era quella di costruire inizialmente una sorta di voce di paging generale in MapRouting, in modo da poter utilizzare la stessa vista parziale per eseguire il rendering dei controlli di paging con ogni elenco in cui ho tale necessità, ma poiché non potevo farlo funzionare i ho provato questo approccio più specifico, ma non riesco ancora a far sì che il controller reagisca a questa richiesta URL.

Qualche idea e / o suggerimento per favore?

È stato utile?

Soluzione

Esistono altri percorsi per quell'area a cui l'URL potrebbe corrispondere?

Ad esempio, se hai ancora il percorso area predefinito:

context.MapRoute(
    "DefaultAreaRoute",
    "Admin/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = Url.Optional });

ed è elencato prima del tuo nuovo percorso, il tuo URL preferito corrisponderà e utilizzerà prima questo percorso.

Altri suggerimenti

   context.MapRoute(
        "pMjesta",
        "Admin/Mjesta/Page/{page}",
        new {controller = "Mjesta", action = "Index", page = "{page}"});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top