Home
MICROSOFT VISUAL STUDIO: Tips about MVC and C#

Volete usare la paginazione su MVC?

Come fare il binding in MVC di una ICollection property?

 

 

 

Paginazione

La migliore guida per la paginazione in MVC con C# la trovate qui.

E' un metodo semplice che si applica ad una qualunque lista di oggetti.

La prima cosa da fare è installare nel nostro progetto il plugin necessario per usare la paginazione.

Il plugin si installa mendiante il seguente comando:

 

Install-Package PagedList.Mvc

 

Mediante questa istruzione, installiamo il pacchetto PagedList.MVC mediante NuGet. La stessa cosa la si può fare mediante la console grafica di NuGet.

La lista che vogliamo paginare deve essere così creata:

 

int pageNumber = 1;

int pageSize = 10;

IPagedList<MioTipo> listPaged = listNonPaged.ToPagedList(pageNumber, pageSize);

 

Queste istruzioni servono a preparare la lista.

Vediamo nella vista cosa ci va:

 

@using PagedList.Mvc;

.......

@foreach (var item in Model.listPaged)
{
        ......
}

    Page @(Model.listPaged.PageCount < Model.listPaged.PageNumber ? 0 : Model.listPaged.PageNumber) of @Model.listPaged.PageCount

    @Html.PagedListPager(Model.listPaged, page => Url.Action("Index",
        new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))

 

L'ultima istruzione se la si vuole personalizzare si può fare:

 

 @Html.PagedListPager(Model.listPaged, page => "my personal url/?page="+page)

 

MVC - Binding ICollection property

Ecco un esempio pratico

 


                        @for (var i= 0; i < @Model.User.Addresses.Count; i++)
                        {
                            var address = @Model.User.UsrAddresses.ElementAt(i);
                            <p>

                                    @address.MainLineAddress
                                    @Html.HiddenFor(m => m.User.Addresses.ElementAt(i).MainLineAddress, new { @Name = string.Format("User.Addresses[{0}].MainLineAddress", i) })
                            </p>
                          }

Sovrascrivendo la property @Name si forza a fissare il nome corretto e così il binding può funzionare.

 

Buon lavoro!

Il nostro sito utilizza i cookie

Usando il sito accetti implicitamente il loro uso. Per saperne di piu'

Approvo

Per ulteriori informazioni leggi il seguente articolo Privacy e Cookies