asp.net mvc - How to use pageList in a view -
i trying use pagedlist obtain paged list of tickets.
the model using following :
public class ticketindexmodel { public ienumerable<ticket> ticketlist { get; set; } public string tickettitle { get; set; } public string ticketdescription { get; set; } }
and in controller sending view :
ticketindexmodel indexticketlist = new ticketindexmodel(); indexticketlist.ticketlist = db.tickets.where(r => r.username == currentusername).tolist().orderbydescending(r => r.datecreated); return view(indexticketlist.ticketlist.topagedlist(pagenumber,pagesize));
in view have 2 things, list of tickets , simple form add ticket. here little code :
@model pagedlist.ipagedlist<cds.models.ticketindexmodel> @foreach (var row in model) { foreach(var item in row.ticketlist){ // list of tickets } }
but problem in form adding new ticket
@html.labelfor(model => model.tickettitle)
model.tickettitle not available access.
how can fix ? or suggest use different paging system ?
edit :
i made changes said in controller, switched ticketindexmodel in view, changed model use ipagedlist.
i added following code : page @(model.pagecount < model.pagenumber ? 0 : model.pagenumber) of @model.pagecount
@if (model.haspreviouspage) { @html.actionlink("<<", "index", new { page = 1, sortorder = viewbag.currentsort, currentfilter=viewbag.currentfilter }) @html.raw(" "); @html.actionlink("< prev", "index", new { page = model.pagenumber - 1, sortorder = viewbag.currentsort, currentfilter=viewbag.currentfilter }) } else { @:<< @html.raw(" "); @:< prev } @if (model.hasnextpage) { @html.actionlink("next >", "index", new { page = model.pagenumber + 1, sortorder = viewbag.currentsort, currentfilter=viewbag.currentfilter }) @html.raw(" "); @html.actionlink(">>", "index", new { page = model.pagecount, sortorder = viewbag.currentsort, currentfilter=viewbag.currentfilter }) } else { @:next > @html.raw(" ") @:>> }
but error
models.ticketindexmodel' not contain definition 'pagecount' , no extension method 'pagecount' accepting first argument of type 'models.ticketindexmodel' found (are missing using directive or assembly reference?)
should change model ? don't know exactly, it's first time use this, , started using mvc 3 months ago.
in view have 2 things, list of tickets , simple form add ticket.
then ipagedlist<cds.models.ticketindexmodel>
not suitable view model view since need more information in simple paged list of tickets.
you make view typed ticketindexmodel
type instead:
ticketindexmodel indexticketlist = new ticketindexmodel(); indexticketlist.ticketlist = db .tickets .where(r => r.username == currentusername) .tolist() .orderbydescending(r => r.datecreated) .topagedlist(pagenumber,pagesize); return view(indexticketlist);
and view:
@model ticketindexmodel ... here can access model.tickettitle since need , model.ticketlist show list
of course might need adapt model uses ipagedlist<ticket>
instead of ienumerable<ticket>
.
Comments
Post a Comment