ASP.NET核心路由标记助手使用路由?

时间:2017-06-15 12:15:10

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

我对asp-route- *标签助手的工作原理感到困惑。我的理解是它与我设置的路由绑定了。 E.g。

 routes.MapRoute(
    name: null,
    template: "{category}/Page{page:int}",
    defaults: new { controller = "Product", action = "List" }
 );

在这里,我将路线映射如下:/ Category / PageNumber,用于控制器“产品”中的动作“列表”

单击以下代码后,将按照上一个maproute

进行操作
<a class="btn btn-block 
   @(cat == ViewBag.SelectedCategory ? "btn-primary" : "btn-default")"
    asp-controller="Product"
    asp-action="List"
    asp-route-category="@cat"
    asp-route-page="1">@cat</a>

所以我理解的是“asp-route-category”将在我的routeMap模板中搜索“{category}”,然后“asp-route-page”将在routeMap中搜索“{page}”模板?

关于MS的文档有点令人困惑或只是抽象,有人可以更好地确认或解释这个吗?

1 个答案:

答案 0 :(得分:3)

使用conventional routing时,您需要controlleraction参数,并映射到您的控制器和操作名称。

因此,如果您想使用a路由到Controller List中的操作Product 类别和Page参数,您的路由应如下所示:

routes.MapRoute(
    name: null,
    template: "{controller}/{action}/{category}/Page{page:int}",
    defaults: new { controller = "Product", action = "List" }
 );

<强>更新

您正在使用的Tag Helpers中的asp-route属性将提供路由值的参数。

基本上,asp-route-MyParameter会添加MyParameter来路由具有指定值的值。

More Information here