Я бы создал помощника для этого ...
public static string LanguageLink(this HtmlHelper html, string text, string languageCode)
{
var routeValues = new RouteValueDictionary(html.ViewContext.RouteData.Values);
routeValues["languageCode"] = languageCode;
string action = routeValues["action"].ToString();
return html.ActionLink(text, action, routeValues);
}
.. затем на вашей главной странице (или где-либо еще) ...
<%= Html.LanguageLink("English", "en") %>
<%= Html.LanguageLink("Spanish", "es") %>
<%= Html.LanguageLink("German", "de") %>
<%= Html.LanguageLink("French", "fr") %>
Они будут ссылаться на те же значения контроллера / действия и маршрута, но добавят код языка. Чтобы получить их для создания дружественного URL, вы можете добавить это выше маршрута по умолчанию .
routes.MapRoute(
"languageRoute",
"{languageCode}/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" },
new { languageCode = @"\w{2}" }
);
(При таком маршруте вы не сможете сопоставить контроллеры с именем из 2 символов, но это, вероятно, хорошо).