我正在使用 .net core2 进行测试,我的 StatrtUp
的 configure
方法中有以下的 routes
:
app.UseMvc(routes => {
routes.MapRoute(
name: "pagination",
template: "Products/Page{page}",
defaults: new { controller = "Product", action = "List" });
routes.MapRoute(
name: "default",
template: "{controller=Product}/{action=List}/{id?}");
});
这段代码来自于《Pro ASP.NET Core MVC 6th Edition》第8章,这本书是为Asp.net Core1编写的。
网址http://localhost:65000/
运行良好,但http://localhost:65000/Products/Page2
不能正常工作。
http://localhost:65000/
调用了ProductController
的List
操作,但http://localhost:65000/Products/Page2
给出了以下异常:
InvalidOperationException:未找到视图'List'。已搜索以下位置:
/Views/Shared/List.cshtml
显然,/Views/Product/
文件夹没有搜索到List
。我的路由有什么问题?我正在使用的新项目模板是Web应用程序(模型-视图-控制器)
,带有身份验证:单独用户帐户
编辑
添加了控制器代码,这只是我之前提到的书中的示例代码。
public class ProductController : Controller {
private IProductRepository repository;
int PageSize = 4;
public ProductController(IProductRepository repo) {
repository = repo;
}
public ViewResult List(int page = 1) => View(
new ProductsListViewModel {
Products = repository.Products
.OrderBy(x => x.Name)
.Skip(PageSize * (page - 1))
.Take(PageSize),
PagingInfo = new PagingInfo {
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = repository.Products.Count()
}
}
);
}