asp.net mvc - Using PagedList with ViewModel -
hi guys need in solving problem while using pagedlist viewmodel(works domain model).
i mvc beginner, here have tried far.
/**********i have 1 model***********/
public class property { public int id { get; set; } public int userid { get; set; } public datetime created { get; set; } public datetime edited { get; set; } }
created viewmodel out of (will add more properties other domain model time being using 1 domain model
public class searchresultsvm { public pagedlist.ipagedlist<property> basicdetails { get; set; } }
controller action method:
public actionresult searchresults(string sortorder, string searchkeyword, string currentfilter, int? page) { viewbag.currentsort = sortorder; viewbag.titlesortparm = string.isnullorempty(sortorder) ? "title_desc" : ""; viewbag.datesortparm = sortorder == "date" ? "date_desc" : "date"; if (searchkeyword != null){page = 1;} else{searchkeyword = currentfilter;} viewbag.currentfilter = searchkeyword; var sr = s in db.property select s; if (!string.isnullorempty(searchkeyword)) {sr = db.property.where(s => s.propertytitle.toupper().contains(searchkeyword.toupper()));} switch (sortorder) { case "title_desc": sr = sr.orderbydescending(s => s.propertytitle); break; case "date": sr = sr.orderby(s => s.created); break; case "date_desc": sr = sr.orderbydescending(s => s.created); break; default: sr = sr.orderby(s => s.propertytitle); break; } searchresultsvm srvm = new searchresultsvm(); int pagesize = 10; int pagenumber = (page ?? 1); srvm.basicdetails = sr.tolist().topagedlist(pagenumber,pagesize); return view(srvm); }
my view
while accessing viewmodel in view not getting properties of property domain model
@model pagedlist.ipagedlist<gh_final.viewmodel.searchresultsvm> @using pagedlist; @using pagedlist.mvc; @using (html.beginform("searchresults", "home", formmethod.get)) { <p> find name: @html.textbox("searchkeyword", viewbag.currentfilter string) <input type="submit" value="search" /> </p> } @foreach (var item in model) { <tr> <td> @html.displayfor(modelitem => item.created) </td> <td> @html.displayfor(modelitem => item.basicdetails.created) </td> <td> @html.displayfor(modelitem => item.basicdetails.propertydesc) </td>
instead of:
@model pagedlist.ipagedlist<gh_final.viewmodel.searchresultsvm>
do this:
@model gh_final.viewmodel.searchresultsvm
and instead of:
@foreach (var item in model) { <tr> <td> @html.displayfor(modelitem => item.created) </td> <td> @html.displayfor(modelitem => item.basicdetails.created) </td> <td> @html.displayfor(modelitem => item.basicdetails.propertydesc) </td>
it should be:
@foreach (var item in model.basicdetails) { <tr> <td> @html.displayfor(modelitem => item.created) </td> <td> @html.displayfor(modelitem => item.edited) </td> <td> @html.displayfor(modelitem => item.propertydesc) </td> <tr> }
Comments
Post a Comment