title: Set Culture in an ASP.Net MVC app
body: <p>What is the best place to set the Culture/UI Culture in an ASP.net MVC app</p>
  
  <p>Currently I have a CultureController class which looks like this:</p>
  
  <pre><code>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");
      }
  }
  </code></pre>
  
  <p>and a hyperlink for each language on the homepage with a link such as this:</p>
  
  <pre><code>&lt;li&gt;&lt;%= Html.ActionLink("French", "SetFrenchCulture", "Culture")%&gt;&lt;/li&gt;
  &lt;li&gt;&lt;%= Html.ActionLink("Spanish", "SetSpanishCulture", "Culture")%&gt;&lt;/li&gt;
  </code></pre>
  
  <p>which works fine but I am thinking there is a more appropriate way to do this.</p>
  
  <p>I am reading the Culture using the following ActionFilter
  <a href="http://www.iansuttle.com/blog/post/ASPNET-MVC-Action-Filter-for-Localized-Sites.aspx" rel="noreferrer">http://www.iansuttle.com/blog/post/ASPNET-MVC-Action-Filter-for-Localized-Sites.aspx</a>.  I am a bit of an MVC noob so am not confident I am setting this in the correct place.  I don't want to do it at the web.config level, it has to be based on a user's choice.  I also don't want to check their http-headers to get the culture from their browser settings.</p>
  
  <p>Edit:</p>
  
  <p>Just to be clear - I am not trying to decide whether to use session or not. I am happy with that bit.  What I am trying to work out is if it is best to do this in a Culture controller that has an action method for each Culture to be set, or is there is a better place in the MVC pipeline to do this?</p>