gpt4 book ai didi

asp.net-mvc - 在 ASP.Net MVC 应用程序中设置文化

转载 作者:行者123 更新时间:2023-12-03 05:10:50 25 4
gpt4 key购买 nike

在 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 header 来从他们的浏览器设置中获取文化。

编辑:

需要明确的是 - 我并不是想决定是否使用 session 。我对这一点很满意。我想要解决的是,是否最好在具有要设置的每种文化的操作方法的文化 Controller 中执行此操作,或者 MVC 管道中是否有更好的位置来执行此操作?

最佳答案

我正在使用这个localization method并添加了一个路由参数,用于在用户访问 example.com/xx-xx/时设置文化和语言

示例:

routes.MapRoute("DefaultLocalized",
"{language}-{culture}/{controller}/{action}/{id}",
new
{
controller = "Home",
action = "Index",
id = "",
language = "nl",
culture = "NL"
});

我有一个过滤器可以进行实际的文化/语言设置:

using System.Globalization;
using System.Threading;
using System.Web.Mvc;

public class InternationalizationAttribute : ActionFilterAttribute {

public override void OnActionExecuting(ActionExecutingContext filterContext) {

string language = (string)filterContext.RouteData.Values["language"] ?? "nl";
string culture = (string)filterContext.RouteData.Values["culture"] ?? "NL";

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));

}
}

要激活国际化属性,只需将其添加到您的类中即可:

[Internationalization]
public class HomeController : Controller {
...

现在每当访问者访问 http://example.com/de-DE/Home/Index显示德国网站。

我希望这个答案能为您指明正确的方向。

我还制作了一个小型 MVC 5 示例项目,您可以找到 here

只需转至 http://{yourhost}:{port}/en-us/home/index 即可查看英语(美国)的当前日期,或将其更改为 http://{yourhost}:{port }/de-de/home/index 用于德语等。

关于asp.net-mvc - 在 ASP.Net MVC 应用程序中设置文化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1560796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com