Asp.net 向包含局部视图和视图模型(Razor、MVC)的视图添加分页
我正在尝试将分页添加到我的razor视图中。控件函数包含一个视图模型,视图还包含一个要渲染的局部视图。它在model.FilterServices和model.CustomerProfile以及DisplayFor上给出错误 控制器搜索功能:Asp.net 向包含局部视图和视图模型(Razor、MVC)的视图添加分页,asp.net,razor,model-view-controller,pagedlist,Asp.net,Razor,Model View Controller,Pagedlist,我正在尝试将分页添加到我的razor视图中。控件函数包含一个视图模型,视图还包含一个要渲染的局部视图。它在model.FilterServices和model.CustomerProfile以及DisplayFor上给出错误 控制器搜索功能: public ActionResult Search(FilterServicesViewModel sp , int? page) { var data = from profile in _contex
public ActionResult Search(FilterServicesViewModel sp , int? page)
{
var data = from profile in _context.Customers
join service in _context.CustomerServices
on profile.strUserID equals service.strUserID
where profile.CustomerTypeId == 1
select profile;
data = data.OrderBy(profile => profile.Name);
int pageSize = 3;
int pageNumber = (page ?? 1);
var dataPaged = data.ToPagedList(pageNumber, pageSize);
IEnumerable<SelectListItem> items = _context.ServicesOffered.Select(c => new SelectListItem
{
Value = c.lngServiceID.ToString(),
Text = c.Name
});
var serviceProviderViewModel = new ServiceProvider
{
FilterServices = new FilterServicesViewModel(),
CustomerServices = new CustomerServices()
};
serviceProviderViewModel.FilterServices.FindService = sp.FindService;
serviceProviderViewModel.FilterServices.ServicesOffered = items;
serviceProviderViewModel.CustomerProfiles = dataPaged;
return View("SearchServiceProviders", serviceProviderViewModel);
}
公共操作结果搜索(FilterServicesViewModel sp,int?页)
{
var数据=来自_context.Customers中的配置文件
在_context.CustomerServices中加入服务
在profile.strUserID上等于service.strUserID
其中profile.CustomerTypeId==1
选择配置文件;
data=data.OrderBy(profile=>profile.Name);
int pageSize=3;
整数页码=(第1页);
var dataPaged=data.ToPagedList(页码、页面大小);
IEnumerable items=\u context.ServicesOffered.Select(c=>new SelectListItem
{
Value=c.lngServiceID.ToString(),
Text=c.名称
});
var serviceProviderViewModel=新ServiceProvider
{
FilterServices=新建FilterServices视图模型(),
CustomerServices=新CustomerServices()
};
serviceProviderViewModel.FilterServices.FindService=sp.FindService;
serviceProviderViewModel.FilterServices.ServicesOffered=项;
serviceProviderViewModel.CustomerProfiles=dataPaged;
返回视图(“SearchServiceProviders”,serviceProviderViewModel);
}
Razor查看页面:
@model PagedList.IPagedList<DatabaseMVCPractice.ViewModels.ServiceProvider>
@using PagedList.Mvc;
@using PagedList;
<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" />
@{
ViewBag.Title = "SearchServiceProviders";
}
<h2>Search Service Providers</h2>
@{
Html.RenderPartial("_FilterView",Model.FilterServices);
}
<table class="table">
<tr>
<th></th>
</tr>
@foreach (var item in Model.CustomerProfiles)
{
<tr>
<td>
<img src="@Url.Content("~/Images/Thumbs/"+item.ProfileImage)" alt="Image" />
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Address)
</td>
<td>
@Html.DisplayFor(modelItem => item.CustomerType)
</td>
<td>
@Html.DisplayFor(modelItem => item.WhenDate)
</td>
</tr>
}
</table>
<br />
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("Index",
new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
@model PagedList.IPagedList
@使用PagedList.Mvc;
@使用页面列表;
@{
ViewBag.Title=“SearchServiceProviders”;
}
搜索服务提供商
@{
RenderPartial(“\u FilterView”,Model.FilterServices);
}
@foreach(Model.CustomerProfiles中的var项)
{
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modelItem=>item.Address)
@DisplayFor(modelItem=>item.CustomerType)
@DisplayFor(modelItem=>item.WhenDate)
}
@Model.PageCount的@页(Model.PageCountUrl.Action(“索引”),
新建{page,sortOrder=ViewBag.CurrentSort,currentFilter=ViewBag.currentFilter})
查看模型类:
public class ServiceProvider
{
public CustomerProfile Customer { get; set; }
public IEnumerable<CustomerProfile> CustomerProfiles { get; set; }
public CustomerServices CustomerServices { get; set; }
public FilterServicesViewModel FilterServices { get; set; }
}
公共类服务提供者
{
公共CustomerProfile客户{get;set;}
公共IEnumerable CustomerProfiles{get;set;}
公共CustomerServices CustomerServices{get;set;}
公共筛选器服务视图模型筛选器服务{get;set;}
}
我得到一个错误,说:
IPagedList<ServiceProvider>' does not contain a definition for 'CustomerProfiles' and no extension method 'CustomerProfiles' accepting a first argument of type 'IPagedList<ServiceProvider>' could be found (are you missing a using directive or an assembly
IPagedList'不包含“CustomerProfiles”的定义,并且找不到接受“IPagedList”类型的第一个参数的扩展方法“CustomerProfiles”(是否缺少using指令或程序集
它在Model.FilterServices和Model.CustomerProfile以及DisplayFor上给出错误。在视图模型中,您的模型属于分页列表类型。由于您有多个模型,您可以运行循环以查找所需的模型
@{
foreach (var p in Model)
{
Html.RenderPartial("_FilterView", p.FilterServices);
}
}
@Html.PagedListPager(Model, page => Url.Action("Search",
new { page }))
另外,在控制器中,创建一个静态分页列表,并将其传递到视图中
List <ServiceProvider> serviceViews = new List<ServiceProvider>();
serviceViews.Add(serviceProviderViewModel);
int totalProfiles = data.Count();
IPagedList<ServiceProvider> serviceProviders = new StaticPagedList<ServiceProvider>(serviceViews, pageNumber, pageSize,totalProfiles);
return View("SearchServiceProviders", serviceProviders);
List serviceViews=new List();
添加(serviceProviderViewModel);
int totalProfiles=data.Count();
IPagedList serviceProviders=新的静态页面列表(serviceViews、pageNumber、pageSize、totalProfiles);
返回视图(“SearchServiceProviders”,serviceProviders);