为什么Url.Action()为此操作返回NULL?

时间:2019-07-23 08:35:36

标签: asp.net-mvc .net-core

我正在使用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")]

1 个答案:

答案 0 :(得分:-1)

在.NET Core中,“页面”是保留令牌。您可以简单地将此参数重命名为无法识别为令牌的其他名称。