我想要做一个带有路由的“简单”的多语言Web应用程序。
我想在URL中实现以下内容: en/products 和 it/prodotti 使用相同的操作。
我已经创建了两个不同的路由,但它们具有相同的操作/控制器。
我想在URL中实现以下内容: en/products 和 it/prodotti 使用相同的操作。
我已经创建了两个不同的路由,但它们具有相同的操作/控制器。
routes.MapRoute(
name: "english",
template: "en/products",
defaults: new { controller = "home", action = "products" }
);
routes.MapRoute(
name: "italiano",
template: "it/prodotti",
defaults: new { controller = "home", action = "products" }
);
当我想调用这些路由之一时,我使用:
<a href="@Url.RouteUrl("english", new { Action = "home", Controller = "products"})">Products</a>
<a href="@Url.RouteUrl("italiano", new { Action = "home", Controller = "products"})">Prodotti</a>
我获得了网址en/products或it/prodotti
问题是,当我想进行表单提交时,我无法控制返回哪个网址。
<form asp-action="products" method="post">
这只返回我的路由的第一个值。
问题是,当我像使用Url.RouteUrl链接一样发送表单时,如何控制我的路由?
我尝试了这个,但也不起作用:
[Route("it/prodotti")]
[Route("en/products")]
public ViewResutl products() {
...
return View(new viewmodel...);
}