我正在使用ASP.NET Core MVC应用程序。它使用属性路由。
我正在尝试获取GetProperties
的正确URL,并且希望它像“ / objects?page = 1”之类的东西-将我的浏览器指向该URL就像魅力一样,GetProperties
方法获得了page
的正确值,但是我对Url.Action()
并不满意。
控制器:
[Route("objects")]
public class ObjectListController : Controller
操作:
[HttpGet("")]
public async Task<ActionResult> GetProperties(int? page)
CSHTML:
// This works - it returns "/objects" but obviously without any query params.
@Url.Action("GetProperties", "ObjectList")
// This returns NULL
@Url.Action("GetProperties", "ObjectList", new { page = 1 })
为什么不生成预期的URL?
编辑
将此操作添加到操作中时,使用Url.RouteUrl("GetPropertiesRouteName", new { page = 1 })
代替Url.Action()
:
[HttpGet("", Name = "GetPropertiesRouteName")]
答案 0 :(得分:-1)
在.NET Core中,“页面”是保留令牌。您可以简单地将此参数重命名为无法识别为令牌的其他名称。