【问题标题】:.Net Core Multi-Language Routing.Net Core 多语言路由
【发布时间】:2017-10-09 14:58:45
【问题描述】:

我想做一个简单带有路由的多语言网络应用。

我想做的是在网址中: zh/产品它/产品 用同样的动作。

我用相同的动作/控制器创建了两条不同的路线:

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它/产品

问题是,当我想发布表单时,我无法控制要返回哪个 url。

<form asp-action="products" method="post">

返回我的路线的第一个值。

问题是,当我像使用 Url.RouteUrl 链接一样发送表单时,如何控制我的路由?

我试过了,但这也不起作用:

[Route("it/prodotti")]
[Route("en/products")]
public ViewResutl products() {
    ...
    return View(new viewmodel...);
}

【问题讨论】:

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


    【解决方案1】:

    好消息,我终于找到答案了。

        @using (Html.BeginRouteForm("routenamehere"))
        {
        <form>
        ...
        ...
        </form>
        }
    

    【讨论】:

      【解决方案2】:

      它比表面变化要深得多。找到了 Damien Bod 对该主题的引用,

      1. https://damienbod.com/2015/10/21/asp-net-5-mvc-6-localization/
      2. https://github.com/damienbod/AspNet5Localization/tree/master/src/AspNetCoreLocalization

      来源和他关于该主题的文章。

      在解释中,它确实涉及与他演示的 webapi 关联的 ActionFilter。我认为这是您的情况的起点。

      【讨论】:

        猜你喜欢
        • 2015-04-12
        • 2013-12-19
        • 1970-01-01
        • 2013-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多