Was ist der beste Ort, um die Kultur / UI-Kultur in einer ASP.net MVC-App festzulegen?
Derzeit habe ich eine CultureController-Klasse, die folgendermaßen aussieht:
public class CultureController : Controller
{
public ActionResult SetSpanishCulture()
{
HttpContext.Session["culture"] = "es-ES";
return RedirectToAction("Index", "Home");
}
public ActionResult SetFrenchCulture()
{
HttpContext.Session["culture"] = "fr-FR";
return RedirectToAction("Index", "Home");
}
}
und einen Hyperlink für jede Sprache auf der Homepage mit einem Link wie diesem:
<li><%= Html.ActionLink("French", "SetFrenchCulture", "Culture")%></li>
<li><%= Html.ActionLink("Spanish", "SetSpanishCulture", "Culture")%></li>
Das funktioniert gut, aber ich denke, es gibt einen angemesseneren Weg, dies zu tun.
Ich lese die Kultur mit dem folgenden ActionFilter: http://www.iansuttle.com/blog/post/ASPNET-MVC-Action-Filter-for-Localized-Sites.aspx . Ich bin ein bisschen ein MVC-Noob, daher bin ich nicht sicher, ob ich dies an der richtigen Stelle einstelle. Ich möchte es nicht auf der Ebene web.config tun, es muss auf der Wahl eines Benutzers basieren. Ich möchte auch nicht ihre http-Header überprüfen, um die Kultur aus ihren Browsereinstellungen zu erhalten.
Bearbeiten:
Nur um klar zu sein - ich versuche nicht zu entscheiden, ob ich eine Sitzung verwenden möchte oder nicht. Ich bin glücklich mit diesem bisschen. Ich versuche herauszufinden, ob es am besten ist, dies in einem Kultur-Controller zu tun, für den für jede Kultur eine Aktionsmethode festgelegt werden soll, oder ob es in der MVC-Pipeline einen besseren Ort gibt, um dies zu tun.