当我使用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" }
);
});
答案 0 :(得分:0)
asp-route
不应与asp-controller
和asp-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?}");
});