0

我需要创建一个链接,它要求我与另一个路线值相同的地方。

例子

路由规则来自Global.asax

routes.MapRoute(
            "News", // Route name
            "{lang}/{controller}/{action}/page-{page}", // URL with parameters
            new { lang = "pl", controller = "News", action = "Index" } // Parameter defaults
        );

我所在的页面

/pl/News/Index/page-6

我想创建链接到

/en/News/Index/page-6

所以我想改变lang参数。有什么简单的方法可以做到这一点?

4

1 回答 1

0

首先,您需要更改路线以反映以下内容:

routes.MapRoute("AnyLangRoute", "{lang}/{controller}/{action]/page-{page}", new { controller = "News", action = "Index" });

您想从参数列表中删除 lang 属性,但将其保留在 URL 中。

然后你会想要使用

filterContext.RouteData.Values["lang"].ToString()

从 routeData 中获取 {lang} 值。(注意:filterContext 是一个 ControllerContext 对象)。

所以一个网址:

/en/News/Index/page-6

将有一个“lang”值:en

您可以使用该值使用全局过滤器或类似的东西将线程更改为适当的语言(请参阅ActionFilterAttribute - 如果您想了解更多信息)。

从记忆中做这一切,但希望它引导你朝着正确的方向前进。

于 2012-06-26T21:42:36.483 回答