在一个带有 Angular 6 spa 项目的 ASP.Net Core 2.1 中,我使用这个 AccountController.cs 方法返回了一个分页的用户列表:
[HttpGet("users")]
[Produces(typeof(List<UserViewModel>))]
public async Task<IActionResult> GetUsers()
{
return await GetUsers(-1, -1);
}
[HttpGet("users/{page:int}/{pageSize:int}")] <---- conflicts here
[Produces(typeof(List<UserViewModel>))]
public async Task<IActionResult> GetUsers(int page, int pageSize)
{
var users = await _accountManager.GetUsersLoadRelatedAsync(page, pageSize);
return Ok(Mapper.Map<List<UserViewModel>>(users));
}
在 startup.cs 我使用 MVC 如下:
app.UseMvc(routes =>
{
routes.MapRoute("blog", "blog/{*article}", defaults: new { controller = "Blog", action = "Article" });
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
如上所述的代码工作正常,但是当我想在我的项目中开始使用 Razor Pages 时,我创建了一个新的标准 Razor Pages 项目模板并将其 Pages 文件夹添加到当前项目,但只要我这样做并运行项目我收到错误,如果我再次移出 Pages 文件夹,项目开始运行而没有错误。
这是错误描述:
RouteCreationException:属性路由信息出现以下错误:
行动:'MyApiProject.Controllers.AccountController.GetUsers (MyApiProject)'
错误:属性路由“api/Account/users/{page:int}/{pageSize:int}”不能包含名为“{page}”的参数。在路由模板中使用 '[page]' 插入值 ''。
方法代码无需更改,因为它与现有的 Angular spa 配合得很好。那么解决方法是什么?