【发布时间】:2019-03-17 18:24:29
【问题描述】:
在一个带有 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 一起工作得很好。那么解决方法是什么?
【问题讨论】:
标签: c# angular asp.net-core razor-pages asp.net-core-mvc-2.1