asp.net core中,生成一个路由连接的方法如下,
比如对应的是Group控制器下面的名为Index的Action,这样写就可以
<a asp-controller="group" asp-action="Index">首页</a>
如果是admin子区域的
Group控制器下面的名为Index的Action,那么就这样写
<a asp-area="Admin" asp-controller="group" asp-action="Index">首页</a>
如果需要加参数的话,就需要注意了,asp.net core生成带参数的链接过于简单,但是目前文档过于少,导致很多人不知道怎么使用。
比如下面这个Group控制器中的Action
public async Task<IActionResult> GetGroupAuthorizes(string groupId)
生成带有groupId参数的链接要这样写
<a asp-controller="group" asp-action="GetGroupAuthorizes" asp-route-GroupId="@group.objectId">修改</a>
注意,
asp-route-{参数}=""这样的格式来写。
但是这样生成的链接,如果是使用默认的路由设置是下面这个样子
http://localhost:5000/Admin/group/GetGroupAuthorizes/?groupId=6448dbf2-b96a-4262-bd1f-f21a8d6c2d7d
如果想让链接看起来更美观的话,比如像下面这个样子
http://localhost:5000/Admin/group/GetGroupAuthorizes/6448dbf2-b96a-4262-bd1f-f21a8d6c2d7d
就需要高级点的asp.net core特性,
自定义模型绑定
原来的Action代码改为
public async Task<IActionResult> GetGroupAuthorizes([ModelBinder(Name = "id")]string groupId)
这样的话,Action参数groupId就通过自定义设置绑定了id这个参数,然后asp.net core生成的链接就变成
http://localhost:5000/Admin/group/GetGroupAuthorizes/6448dbf2-b96a-4262-bd1f-f21a8d6c2d7d