【发布时间】:2012-11-30 02:43:33
【问题描述】:
我正在尝试实现一个在所有页面上都可见的语言选择器。
我的申请目前有两条路线:
routes.MapRoute(
name: "EventDriven",
url: "{language}/{eventid}/{controller}/{action}/{id}",
defaults: new { language = "en", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{language}/{controller}/{action}/{id}",
defaults: new { language = "en", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
在我共享的_layout.cshtml 文件中,我有以下操作链接:
@Html.ActionLink("English", ViewContext.RouteData.Values["action"].ToString(), new {language="en"})
@Html.ActionLink("Français", ViewContext.RouteData.Values["action"].ToString(), new {language="fr"})
我遇到的问题是我希望保留 {eventid} 路由段,但它不适用于每个 url。
首页索引页http://localhost/MySite/,两个动作链接如下:
English: http://localhost/MySite/
French: http://localhost/MySite/fr
这很好,但在我的内部页面http://localhost/MySite/en/2/Donation 上,操作链接是:
English: http://localhost/MySite/en/2/Donation
French: http://localhost/MySite/fr/Donation
如果我转到http://localhost/MySite/fr/2/Donation,那么操作链接是:
English: http://localhost/MySite/en/Donation
French: http://localhost/MySite/fr/2/Donation
问题是更改语言操作链接不包含 eventid 2 信息。
如何使两个链接都包含事件和语言信息(以及将来无法预见的任何其他路由参数),而无需为它们显式编程?
【问题讨论】:
-
您的第二条地图路线需要将 en 更改为 fr 以供初学者使用
标签: c# asp.net-mvc asp.net-mvc-4