Razor asp路由未生成预期的url
当我使用asp路由标记时,它不会返回准确的url。都不是Url.RouteUrl。它们返回主url。但是使用asp控制器和asp操作,返回预期的urlRazor asp路由未生成预期的url,razor,asp.net-core-mvc,asp.net-core-mvc-2.0,Razor,Asp.net Core Mvc,Asp.net Core Mvc 2.0,当我使用asp路由标记时,它不会返回准确的url。都不是Url.RouteUrl。它们返回主url。但是使用asp控制器和asp操作,返回预期的url <a asp-route="Voucher_getPrice" data-ng-href="@Url.RouteUrl("Voucher_getPrice", new { productId = 5})" asp-route-productId="5"></a> asp路由不应与asp控制器和asp操作一起使用。换句话说
<a asp-route="Voucher_getPrice" data-ng-href="@Url.RouteUrl("Voucher_getPrice", new { productId = 5})" asp-route-productId="5"></a>
asp路由
不应与asp控制器
和asp操作
一起使用。换句话说,您不能在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?}");
});
它不起作用。当我访问链接时,它返回404代码。但是使用这个模板:
{controller=concedure}/{action=GetPrice}/{productId}
操作代码是public-IActionResult-GetPrice(int-productId)
。控制器类名是:VoucherController
我假设您在“凭证\u getPrice”之后配置了默认路由。无论如何,请查看我的更新。这正是我配置路由的方式。但是我的默认路线没有id
参数。这就是为什么当我访问链接/凭证/getPrice
时会起作用,但不使用参数。当我删除默认路由时,链接/concreate/getPrice
返回404。因此路由模板:“凭证/getPrice/{productId}”
无效。您刚才说明了它不起作用的原因。您需要有默认路由,以便路由凭证/getPrice/{productId}
调用正确的控制器和操作。或者,如果您希望所有像'xx/xxx/这样的请求都调用凭证控制器GetPrice操作,那么您可以使用{controller=Voucher}/{action=GetPrice}/{productId}
。这就是问题所在。我的默认路线没有任何参数。它匹配任何没有参数的路由。但在凭证/getPrice/{productId}
的情况下,我的路线与参数不匹配。我想删除默认路由,使其仅与symfony PHP中的/
匹配。在symfony PHP中,如果我说路由必须有一个参数,那么匹配/
的默认路由将不会调用控制器操作,如果链接是/hello
。
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?}");
});