我读过:
asp-action或asp-controller taghelper。但是asp-area呢?
<a asp-controller="Home" asp-action="About">About</a>
您如何使用区域参数扩展上述超链接?
这不起作用:
<a asp-controller="Application/Home" asp-action="About">About</a>
查看mvc 6.0 beta8源代码,没有asp-area。
答案 0 :(得分:3)
您可以使用asp-route-*
来传递路线参数。那个 也应该用于传递一个区域,因为这基本上就是你对Url.Action
的处理方式。所以试试:
<a asp-controller="Home" asp-action="About" asp-route-area="MyArea">About</a>
答案 1 :(得分:1)
如果您对相关的源代码感兴趣,可以在AnchorTagHelper
。
正如@ chris-pratt所提到的,asp-route-area
将起作用,因为area基本上是根据模板{area}/{controller}/{action}
定义的路径参数。
asp-route-
会将每个路径数据映射到名为routeValues
的字典中,并以这种方式调用IHtmlGenerator
:
tagBuilder = Generator.GenerateActionLink(
linkText: string.Empty,
actionName: Action,
controllerName: Controller,
protocol: Protocol,
hostname: Host,
fragment: Fragment,
routeValues: routeValues,
htmlAttributes: null);
对于此TagHelper的其他用途,请不要查看源代码,因为TagHelpers非常独立且易于处理。您还可以查看正在定义的所有其他TagHelper right here。