iLu_is_a_loser
Erfahrenes Mitglied
Guten Tag
ich habe ein Problem. Und zwar versuche ich gerade eine Lokalisierung mit Routing zu realisieren.
Wenn ich eine Kultur in der RouteConfig.cs übergebe wird diese immer geladen, obwohl ggf. eine aus einem Cookie geladen werden sollte.
Wenn ich dort keine Übergebe bekomme ich nur Fehlermeldungen.
Weiß vielleicht jemand wie ich es schaffe die RouteConfig.cs so abzuändern, dass der Route "culture" erst später gesetzt werden kann?
Hier mein Code:
RouteConfig.cs
global.asax
Die 4 * sollten 2 ? sein. Keine Ahnung warum er das hier nicht übernehmen will -.-
HomeController.cs
Ich hoffe mir kann jemand helfen.
ich habe ein Problem. Und zwar versuche ich gerade eine Lokalisierung mit Routing zu realisieren.
Wenn ich eine Kultur in der RouteConfig.cs übergebe wird diese immer geladen, obwohl ggf. eine aus einem Cookie geladen werden sollte.
Wenn ich dort keine Übergebe bekomme ich nur Fehlermeldungen.
Weiß vielleicht jemand wie ich es schaffe die RouteConfig.cs so abzuändern, dass der Route "culture" erst später gesetzt werden kann?
Hier mein Code:
RouteConfig.cs
Code:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{culture}/{controller}/{action}/{id}",
defaults: new { culture = "DE", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
global.asax
Code:
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
var handler = Context.Handler as MvcHandler;
var routeData = handler != null ? handler.RequestContext.RouteData : null;
var routeCulture = routeData != null ? routeData.Values["culture"].ToString() : null;
var languageCookie = HttpContext.Current.Request.Cookies["lang"];
var userLanguages = HttpContext.Current.Request.UserLanguages;
// Set the Culture based on a route, a cookie or the browser settings,
// or default value if something went wrong
var cultureInfo = new CultureInfo(
routeCulture **** (languageCookie != null
? languageCookie.Value
: userLanguages != null
? userLanguages[0]
: "DE")
);
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureInfo.Name);
}
HomeController.cs
Code:
public ActionResult ChangeCulture(string lang)
{
var langCookie = new HttpCookie("lang", lang)
{
HttpOnly = true,
Expires = DateTime.Now.AddYears(2)
};
Response.AppendCookie(langCookie);
return RedirectToAction("Index", "Home", new { culture = lang });
}
Ich hoffe mir kann jemand helfen.
Zuletzt bearbeitet: