public static string ActionLinkMultilanguage(this HtmlHelper htmlHelper, string linkText,string actionName, string controllerName, string language){if (language == null)language = (string)htmlHelper.ViewContext.RouteData.Values["language"];if (controllerName == null)controllerName = (string)htmlHelper.ViewContext.RouteData.Values["controller"];// get the controllerType controller=ControllerUtilities.GetControllerByName(controllerName);// get the controller's language specific namestring controllerNameLS= GetControllerNameLS(controllerName, language, controller);// get the action's language specific namestring actionNameLS = GetActionNameLS(actionName, language, controller);// give language for URLvar dic=new RouteValueDictionary();dic.Add("language", language);return HtmlHelper.GenerateLink(htmlHelper.ViewContext.RequestContext,htmlHelper.RouteCollection, linkText, null, actionNameLS,controllerNameLS, dic, new RouteValueDictionary());}
Als Name des Controllers und der Action werden die Namen der Klasse und Methode angegeben. Mittels GetController/ActionNameLS wird der sprachspezifische Name ermittelt. Hierzu werden die AlternativeLanguageNameAttribute der Klasse und Methode verwendet. Falls eine Sprache nicht angegeben ist, wird der Name der Klasse/Methode verwendet.
Zusammenfassung
In diesem Artikel wurde ein Weg gezeigt, wie die URLs bei ASP.NET MVC suchmaschinen-freundlich und gut lesbar sprachabhängig gestaltet werden können. Dazu wurden anfangs alternative Namen verwendet, die im nächsten Schritt um die Sprachkomponenten erweitert wurden. Durch Extensions der HtmlHelper-Klasse können auch die erstellten Links an die Mehrsprachigkeit angepasst werden.



