【发布时间】:2010-12-06 08:34:27
【问题描述】:
在 ASP.net MVC 应用程序中设置文化/UI 文化的最佳位置是什么
目前我有一个 CultureController 类,如下所示:
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");
}
}
以及主页上每种语言的超链接,链接如下:
<li><%= Html.ActionLink("French", "SetFrenchCulture", "Culture")%></li>
<li><%= Html.ActionLink("Spanish", "SetSpanishCulture", "Culture")%></li>
效果很好,但我认为有更合适的方法来做到这一点。
我正在使用以下 ActionFilter 阅读文化 http://www.iansuttle.com/blog/post/ASPNET-MVC-Action-Filter-for-Localized-Sites.aspx。我有点像 MVC 菜鸟,所以我不确定我是否将其设置在正确的位置。我不想在 web.config 级别这样做,它必须基于用户的选择。我也不想检查他们的 http-headers 以从他们的浏览器设置中获取文化。
编辑:
要明确一点——我并不是要决定是否使用会话。我对那一点很满意。我想要解决的是最好在具有每个 Culture 设置的操作方法的 Culture 控制器中执行此操作,还是在 MVC 管道中有更好的位置来执行此操作?
【问题讨论】:
-
使用会话状态来选择用户文化不是一个好的选择。最好的方法是include the culture as part of the URL,这样可以很容易地用另一种文化“交换”当前页面。
标签: asp.net-mvc localization culture