C# 值?将路由参数修改为new{new{OrderBy=ViewBag.SortOrder,page,pageSize=Model.pageSize}然后在控制器中,在返回视图之前添加ViewBag.SortOrder=OrderBy;。但是如果视图模型具有所
C# 值?将路由参数修改为new{new{OrderBy=ViewBag.SortOrder,page,pageSize=Model.pageSize}然后在控制器中,在返回视图之前添加ViewBag.SortOrder=OrderBy;。但是如果视图模型具有所,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,值?将路由参数修改为new{new{OrderBy=ViewBag.SortOrder,page,pageSize=Model.pageSize}然后在控制器中,在返回视图之前添加ViewBag.SortOrder=OrderBy;。但是如果视图模型具有所需的所有属性,效果会更好。@stephenmueke你的评论真的帮了我大忙!非常感谢!我已经成功了。你能给我举一个关于视图模型的例子吗?我是个初学者,我已经学会了一个是这样的,但我不知道为什么在运行应用程序时会出现此错误:方法“Skip”仅支持
值?将路由参数修改为
new{new{OrderBy=ViewBag.SortOrder,page,pageSize=Model.pageSize}
然后在控制器中,在返回视图之前添加ViewBag.SortOrder=OrderBy;
。但是如果视图模型具有所需的所有属性,效果会更好。@stephenmueke你的评论真的帮了我大忙!非常感谢!我已经成功了。你能给我举一个关于视图模型的例子吗?我是个初学者,我已经学会了一个是这样的,但我不知道为什么在运行应用程序时会出现此错误:方法“Skip”仅支持LINQ to Entities中的排序输入。方法“OrderBy”必须在方法“Skip”之前调用。我的代码中没有Skip方法。我已经搜索了它,但找不到它。.Skip()
被PagedList
调用。很抱歉,我刚才复制了您的代码部分(您的代码也会出现此错误)。添加其他{products=products.OrderBy(p=>p.someproperty)}
(可能是ID
属性)因此,在调用PagedList
之前,您可以获得一个有序的集合,当我转到时,它可以工作,但当我直接转到时,它不工作
[HttpGet]
public ActionResult Products(int? OrderBy, int page=1, int pageSize=6)
{
private Shopping db = new Shopping();
switch (OrderBy)
{
case 1:
List<Product> listProductsasc = db.Products.OrderBy(p => p.Name).ToList();
PagedList<Product> modelasc = new PagedList<Product>(listProductsasc, page, pageSize);
return View(modelasc);
case 2:
List<Product> listProductsdesc = db.Products.OrderByDescending(p => p.Name).ToList();
PagedList<Product> modeldesc = new PagedList<Product>(listProductsdesc, page, pageSize);
return View(modeldesc);
default:
List<Product> listProducts = db.Products.ToList();
PagedList<Product> modeldefault = new PagedList<Product>(listProducts, page, pageSize);
return View(modeldefault);
}
}
@model PagedList.IPagedList<FypStore.Models.Product>
@using PagedList.Mvc
<div class="row">
<div class="col-sm-6">
@using (Html.BeginForm("Products", "Home", FormMethod.Get, new { id = "Form1" }))
{
<div class="col-sm-8">
Sort by:
@Html.DropDownList("OrderBy", new List<SelectListItem>
{
new SelectListItem{ Text="A-Z", Value = "1" },
new SelectListItem{ Text="Z-A", Value = "2" }
}, "-- Order By --")
</div>
<div class="col-sm-4">
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Filter" />
</div>
</div>
</div>
}
</div>
</div>
<br />
@Html.PagedListPager(Model, page => Url.Action("Products", new { page, pageSize = Model.PageSize }))
Showing @Model.FirstItemOnPage to @Model.LastItemOnPage of @Model.TotalItemCount Products
[HttpGet]
public ActionResult Products(int? OrderBy, int page = 1, int pageSize = 2)
{
ViewBag.OrderBy = OrderBy;
...
@Html.PagedListPager(Model, page => Url.Action("Products", new { page, pageSize = Model.PageSize, OrderBy = ViewBag.OrderBy }))
List<Product> modelasc = new PagedList<Product>(listProductsasc, page, pageSize);
var viewModel = ProductsViewModel();
viewModel.Products = modelasc;
viewModel.OrderBy = OrderBy;
return View(viewModel);
@model FypStore.Models.ProductsViewModel
...
@Html.PagedListPager(Model, page => Url.Action("Products", new { page, pageSize = Model.Products.PageSize, OrderBy = Model.OrderBy }))
<div class="col-sm-8">
Page size:
@Html.DropDownList("pageSize", new List<SelectListItem>
{
new SelectListItem{ Text="2", Value = "2" },
new SelectListItem{ Text="3", Value = "3" }
}, "-- Page Size --")
</div>
@Html.PagedListPager(Model, page => Url.Action("Products", new { OrderBy = ViewBag.SortOrder, page, pageSize = Model.PageSize }))
ViewBag.SortOrder = OrderBy;
public class ProductsVM
{
[Display(Name = "Sort by:")]
public int? OrderBy { get; set; }
public IEnumerable<SelectListItem> OrderList { get; set; }
public int Page { get; set; }
public int PageSize { get; set; }
PagedList<Product> Products { get; set; }
}
[HttpGet]
public ActionResult Products(int? orderBy, int page=1, int pageSize=6)
{
private Shopping db = new Shopping();
IEnumerable<Product> products = db.Products; // not .ToList()
if (orderBy == 1)
{
products = products.OrderBy(p => p.Name);
}
else if (orderBy == 2)
{
products = products.OrderByDescending(p => p.Name)
}
ProductsVM model = new ProductsVM
{
OrderBy = orderBy,
OrderList = new List<SelectListItem>
{
new SelectListItem{ Text="A-Z", Value = "1" },
new SelectListItem{ Text="Z-A", Value = "2" }
},
Page = page,
PageSize = pageSize,
Products = new PagedList<Product>(products, page, pageSize);
};
return View(model);
}
@model ProductsVM
....
@using (Html.BeginForm("Products", "Home", FormMethod.Get))
{
@Html.LabelFor(m => m.OrderBy)
@Html.DropDownListForFor(m => m.OrderBy, Model.OrderList, "-- Order By --")
<input type="submit" class="btn btn-default" value="Filter" />
}
@Html.PagedListPager(Model.Products, page => Url.Action("Products", new { orderBy = Model.OrderBy, page, pageSize = Model.PageSize }))
Showing @Model.Products.FirstItemOnPage to @Model.Products.LastItemOnPage of @Model.Products.TotalItemCount Products