无法在 asp.net mvc 中使用资源文件进行本地化

2024-01-08

我正在开发一个 ASP.NET MVC 应用程序。在我的应用程序中,我想添加一个下拉选项,供用户选择语言。我找到了使用 ASP.NET MVC 的本地化文章。

  • http://www.c-sharpcorner.com/UploadFile/b8e86c/localization-of-a-site-in-mvc5-using-resource-file/ http://www.c-sharpcorner.com/UploadFile/b8e86c/localization-of-a-site-in-mvc5-using-resource-file/

  • http://www.mikesdotnetting.com/article/183/globalization-and-localization-with-razor-web-pages http://www.mikesdotnetting.com/article/183/globalization-and-localization-with-razor-web-pages

它全部使用资源文件进行本地化,并根据文化属性检索资源。例如,如果我们使用英语和法语,则必须创建两个资源文件,名称为 LangRes.resx 和 LangRes.fr-FR.resx 。所以我测试了如何使用资源文件,如下所示。但它不起作用。

  1. 我创建了两个资源文件,名为 LangRes.resx 和 LangRes.fr-FR.resx

  2. 我将这两个文件的修饰符设置为 public。

  3. 然后我将这些值添加到资源文件中

  4. 然后我在 Web.config 中添加了这个

    <globalization enableClientBasedCulture="true" culture="auto" uiCulture="auto"></globalization>
    
  5. 然后在视图文件中我打印了这样的消息

    @{
        Culture = UICulture = "fr-FR";
    }
    <h2>@LangRes.Title</h2>
    

实际上,它应该显示法国。正确的?因为我将区域性设置为“fr-FR”,并且它映射到后缀为 LangRes.fr-FR.resx 的资源文件。但它总是显示“English”。我该如何修复它?此外,在 ASP.NET MVC 中本地化的最佳方法是什么?


您需要通过添加以下函数在 Global.asax 中设置默认语言:

protected void Application_BeginRequest(object sender, EventArgs e)
    {
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-FR");
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr-FR");
    }

如果您想为用户使用更改语言选项并创建更改语言按钮(例如 EN 和 FR 按钮)。您必须在控制器中设置文化值。例如:

View:

@Html.ActionLink("English", "SelectLanguage", "Home", new { SelectedLanguage = "en-US" }, null)
@Html.ActionLink("Français", "SelectLanguage", "Home", new { SelectedLanguage = "fr-FR" }, null)

控制器:

public ActionResult SelectLanguage(string SelectedLanguage) 
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(SelectedLanguage);
        Thread.CurrentThread.CurrentUICulture = new CultureInfo(SelectedLanguage.ToLower());

        HttpCookie LangCookie = new HttpCookie("LangCookie");
        LangCookie.Value = SelectedLanguage;
        Response.Cookies.Add(LangCookie);

        return RedirectToAction("Index", "Home");
    }

另外,如果你想检查语言 cookie,你可以在 Global.asax 中控制它,如下所示:

protected void Application_BeginRequest(object sender, EventArgs e)
    {
        HttpCookie LangCookie = Request.Cookies["LangCookie"];
        if (LangCookie != null && LangCookie.Value != null)
        {
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(LangCookie.Value);
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(LangCookie.Value);
        }
        else
        {
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-FR");
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr-FR");
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 asp.net mvc 中使用资源文件进行本地化 的相关文章

  • 控制器名称是从类名称派生的吗?

    这是一个新手问题 我正在查看默认的 asp net mvc3 项目 注意到有一个名为 public class AccountController Controller 我查看了整个代码 找不到指定 AccountController 映射
  • 从 ASP.NET Web API 返回 HTML

    如何从 ASP NET MVC Web API 控制器返回 HTML 我尝试了下面的代码 但由于未定义 Response Write 而出现编译错误 public class MyController ApiController HttpP
  • 无效操作。连接已关闭。 ASP.NET MVC

    这种情况并不经常发生 但有时我会收到一封通过电子邮件发送给我的异常报告 指出这段代码 我想知道您是否发现以下代码有任何问题 我无法让它在本地失败 并且使用断点跟踪数据总是会一步步给出正确的结果 namespace DomainModel C
  • ASP MVC:何时调用 IController Dispose()?

    我正在对我的一个较大的 MVC 应用程序进行大规模重构 速度调整 它已经部署到生产环境几个月了 我开始在连接池中等待连接超时 我已将问题追溯到连接未正确处理的情况 鉴于此 我对我的基本控制器进行了以下更改 public class MyBa
  • ASP.NET MVC,Bootstrap Tables,获取每列的值

    在 ASP NET MVC 中 我有一个操作 它接受有关行和列的用户输入 然后导航到根据用户输入生成所需行数和列数的操作 如下所示 Views div class container style width 1px div class ro
  • mvc 登录尝试失败后生成验证码

    所以我能够让我的验证码工作正常工作 但我的问题是 我想让它只在 3 次尝试后出现 我的一个选择是将用户重定向到一个已经有验证码的视图 重复登录 但带有验证码 然后让他通过该页面登录 还有其他选择吗 我觉得部分视图会导致页面发布出现问题 您认
  • 用户注销速度非常快

    我正在使用 ASP NET 身份成员身份 这是 Startup Auth cs 代码 app CreatePerOwinContext EFDbContext Create app CreatePerOwinContext
  • IDisposable,这真的很重要吗

    很久以前我就开始使用 C C 但我仍然有一个习惯 即确保正确清理所有资源 我始终确保在 IDisposable 类上调用 Dispose 并在包含一次性对象的类中实现 Dispose 模式 然而 在我的环境中 我或多或少是唯一一个这样做的人
  • 如何在 ASP.NET MVC 中手动设置用户角色?

    我正在从事的这个项目要求我保留管理员用户的本地数据库 并为普通用户使用外部数据库 在管理数据库中通过身份验证的任何人都应被分配 管理员 角色 而通过其他数据库进行身份验证的任何人将始终被分配 用户 角色 我可以手动分配这些角色吗 我不需要角
  • 在 ASP.NET MVC 中强制使用 Json() 中的小写属性名称

    鉴于以下课程 public class Result public bool Success get set public string Message get set 我将在控制器操作中返回其中之一 如下所示 return Json ne
  • ASP.NET Core MVC防伪

    尝试在核心 mvc 项目中打开防伪功能 但没有成功 做了什么 添加过滤器以自动检查每个 POST 请求的防伪令牌 services AddMvc o gt o Filters Add new AutoValidateAntiforgeryT
  • 身份服务器刷新令牌资源所有者密码凭证流程

    我正在使用 IdentityServer 来控制对 API 的访问 我有一个单独的身份验证 API 它发出令牌并验证访问请求以确保 API 的安全 我让用户能够通过安全的 Web 应用程序生成访问令牌 我正在使用资源所有者密码凭证流程 有没
  • .net 4.7 中的依赖注入?

    我对 DI 有哪些集成选项有点困惑 我发现它对于 net core 对于我的特定项目 来说非常简单 但我不需要构建跨平台应用程序 也看不到使用 core 的优势 但是 net 框架应用程序似乎仍然使用 Global asax 设置且没有 S
  • 将 Javascript 类数组传递给 MVC 控制器?

    我正在尝试将一系列服务传递给我的控制器 我尝试了很多不同的方法来让它工作 在进入控制器之前序列化数据 序列化每个服务 唯一有效的方法是将控制器参数更改为字符串并序列化数组 然后使用 JsonConvert 但我 d 宁愿不这样做 使用指定的
  • 为什么自定义类型变量不保存值MVC

    我正在尝试使用 MVC 5 构建一个网站 我有一个包含 3 个变量的控制器类 public class WorkerController Controller public ViewModel viewModel new ViewModel
  • IIS 7 错误:无法执行程序。正在执行的命令是 csc.exe(ApplicationPoolIdentity 默认设置)

    这是我的第一个问题 如果我有一些语法错误 请向我道歉 问题描述 我在多台服务器上安装了运行在 IIS 7 Windows Server 2008 和 SQL Server 2008 R2 上的基于 32 位 MVC 5 的 CRUD 系统
  • ASP.NET MVC 子操作的路由匹配

    子动作的路由匹配方法与普通动作有什么不同吗 换句话说 子操作是否有一些自动生成的 url 来进行与父操作类似的匹配 父级或子级动作处理没有区别 任何操作都遵循您在中设置的相同路线定义Application Start 这意味着父母的行为以及
  • asp.net mvc:将 RedirectToAction(string, object) 转换为 RedirectToAction(x => x.Detail(id))

    任何人都知道如何创建一个方法 我将把它放在扩展类中 该方法将仅使用表达式 无魔术字符串 与 mvc 的 RedirectToAction 执行相同的操作 所以不要写这样的东西 RedirectToAction Detail new Rout
  • 构建 ViewModel 的合适粒度是多少?

    我正在开发一个新项目 在看到以前项目的一些困难后 这些项目没有提供足够的视图与模型的分离 特别是使用 MVC 模型和视图开始有点相互渗透 我想使用 MVVM 我了解基本概念 并且很高兴开始使用它 然而 有一件事我有点忽略 ViewModel
  • (VS2017)运行所选代码生成器时出错:“序列不包含元素”

    我正在跑过微软的教程之一 https learn microsoft com en us aspnet core tutorials first mvc app 关于 MVC 开发 我在尝试创建各种元素时遇到错误 视图 控制器等 我收到的错

随机推荐