c# - Unable to apply paging in mvc4 when using viewmodel and actionlink -
hi have 1 link button. when clicked on link button number of records displayed. want apply paging that. have tried below.
index.cshtml
@foreach (var group in model.records) { <tr> <td>@html.actionlink(@group.clientid.tostring(), "detailsbyclientid", "documentverification", new { clientid = @group.clientid.tostring()},null)</td> <td>@group.clientname</td> <td>@group.count</td> </tr> }
this controller code.
public actionresult detailsbyclientid(int? clientid, int currentfilter, int? page) { if (clientid != null) { page = 1; } else { clientid = currentfilter; } viewbag.currentfilter = clientid; int pagesize = 8; int pagenumber = (page ?? 1); documentverificationbal objbal = new documentverificationbal(); int cid = convert.toint32(clientid); list<detailsbyclientid> detailsbyclient = objbal.detailsbyclient(cid); ipagedlist<detailsbyclientid> pagedlog = detailsbyclient.topagedlist(pagenumber, pagesize); detailsbyclientidviewmodel model; model = new detailsbyclientidviewmodel() { detailsbyclientid = pagedlog }; return view("detailsbyclientid", model); }
this viewcode
@model pagedlist.ipagedlist<c3card.dal.detailsbyclientidviewmodel> @using pagedlist.mvc; @if(!model.detailsbyclientid.any()) { <div> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="datatable tablehover"> <tr> <th>corporate name</th> <th>employee id</th> <th>employee name</th> <th>nationality</th> <th>document type</th> <th>actions</th> </tr> @foreach (var group in model.detailsbyclientid) { <tr> <td> @group.clientname </td> <td> @group.employeeid </td> <td> @group.employeename </td> <td> @group.documenttype </td> <td scope="col"> <input type="button" class="btn btn-primary btn-cons" value="view document" onclick="showdocumentdata('@group.upld_id');" /> </td> <td scope="col"> < input type="button" class="btn btn-primary btn-cons" value="approve" onclick="showdocumentdata('@group.upld_id');" /> </td> <td scope="col"> < input type="button" class="btn btn-primary btn-cons" value="reject" onclick="showdocumentdata('@group.upld_id');" /> </td> </tr> } </table> @html.pagedlistpager(model, page => url.action("detailsbyclientid", new { page, currentfilter = viewbag.currentfilter, pagesize = 5 })) page @(model.pagecount < model.pagenumber ? 0 : model.pagenumber) of @model.pagecount </div> }
my viewmodel
public class detailsbyclientidviewmodel { public int upldid { get; set; } public ienumerable<detailsbyclientid> detailsbyclientid { get; set; } public ienumerable<metadata> metadata { get; set; } }
i sending clientid detailsbyclientid action method. how can send clientid
currentfilter
actionlink? getting nullable error because not sending current filter. let me know if wrong in place. thank lot
change parameter currentfilter
int?
(nullable), , can test if null
or not. not link can just
<td>@html.actionlink(group.clientid.tostring(), "detailsbyclientid", "documentverification", new { clientid = group.clientid },null)</td>
however there multiple other errors in code throw exceptions.
first, model returning view typeof detailsbyclientidviewmodel
, therefore model in view must match
@model yourassembly.detailsbyclientidviewmodel
next, assigning pagedlist property detailsbyclientid
need change model to
public class detailsbyclientidviewmodel { .... public ipagedlist<detailsbyclientid> detailsbyclientid { get; set; } }
so can used @html.pagedlistpager()
method.
finally, need refer property in pager methods
@html.pagedlistpager(model.detailsbyclientid, page => url.action("detailsbyclientid", new { page, currentfilter = viewbag.currentfilter, pagesize = 5 })) page @(model.detailsbyclientid.pagecount < model.detailsbyclientid.pagenumber ? 0 : model.pagenumber) of @model.detailsbyclientid.pagecount
having said that, unclear why passing detailsbyclientidviewmodel
model view when never use int upldid
or ienumerable<metadata> metadata
of model. keep original code in view , in controller
ipagedlist<detailsbyclientid> pagedlog = detailsbyclient.topagedlist(pagenumber, pagesize); return view("detailsbyclientid", pagedlog );
Comments
Post a Comment