asp-route不会生成预期的url

时间:2018-05-11 19:31:41

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

当我使用asp-route标签时,它不会返回确切的URL。 Url.RouteUrl。他们返回主页。但是使用asp-controller和asp-action,返回预期的url。

<a asp-route="Voucher_getPrice" data-ng-href="@Url.RouteUrl("Voucher_getPrice", new { productId = 5})" asp-route-productId="5"></a>

在主页上,生成的链接为:/Home/Index/5

这是Startup.cs中的路由:

app.UseMvc(routes =>
            {
routes.MapRoute(
                    "Voucher_getPrice",
                    "{controller}/{action}/{productId:required}",
                    new { controller = "Voucher", action = "getPrice" }
                    );
});

1 个答案:

答案 0 :(得分:0)

asp-route不应与asp-controllerasp-action一起使用。换句话说,您无法在MapRoute()上设置模板。相反,您必须在模板中指定控制器和操作名称。

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "voucher_getPrice",

        // You don't need :required filter. If you don't put ? there,
        // it's required.
        template: "voucher/getPrice/{productId}"
    );

    routes.MapRoute(
        name: "default",
        template: "{controller=home}/{action=index}/{id?}");
});