Donnerstag, 24. Mai 2012


Artikel

Dezember 2009 | Artikel

Für jedermann verständlich Fortsetzung, Teil 5

Teil 1   Teil 2   Teil 3   Teil 4   Teil 5   

  1. public static string ActionLinkMultilanguage(this HtmlHelper htmlHelper, string linkText,
  2. string actionName, string controllerName, string language)
  3. {
  4. if (language == null)
  5. language = (string)htmlHelper.ViewContext.RouteData.Values["language"];
  6. if (controllerName == null)
  7. controllerName = (string)htmlHelper.ViewContext.RouteData.Values["controller"];
  8. // get the controller
  9. Type controller=ControllerUtilities.GetControllerByName(controllerName);
  10. // get the controller's language specific name
  11. string controllerNameLS= GetControllerNameLS(controllerName, language, controller);
  12. // get the action's language specific name
  13. string actionNameLS = GetActionNameLS(actionName, language, controller);
  14. // give language for URL
  15. var dic=new RouteValueDictionary();
  16. dic.Add("language", language);
  17. return HtmlHelper.GenerateLink(htmlHelper.ViewContext.RequestContext,
  18. htmlHelper.RouteCollection, linkText, null, actionNameLS,
  19. controllerNameLS, dic, new RouteValueDictionary());
  20. }

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.

Dipl.-Inform. Hilmar Bunjes ist langjähriger Software-Entwickler und IT-Trainer, insbesondere für Server-Anwendungen in J2EE und .NET. Als Projektleiter hat er bereits mehrere Software-Projekte erfolgreich geführt. Nebenbei leitet er seit vier Jahren gemeinschaftlich die .NET User Group Oldenburg. Sie erreichen ihn über hilmar@bluecall.de

Teil 1   Teil 2   Teil 3   Teil 4   Teil 5   

Kommentare