asp-area的taghelper在哪里或者如何创建带有区域的超链接?

时间:2015-11-10 20:03:26

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

我读过:

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。

2 个答案:

答案 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