Volete usare la paginazione su MVC?
Come fare il binding in MVC di una ICollection property?
Come scrivere in una vista il contenuto HTML di una string!
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.
MVC - Scrivere del testo in HTML
Supponiamo di avere una una variabile del testo HTML. Come scriverlo in ua vista?
@MvcHtmlString.Create(myHTMLString);
Semplice ;)
Buon lavoro!