razor - MVC4 本地化。从 View 访问 resx

标签 razor asp.net-mvc-4 localization resx razor-2

在我看来,我想从该文件上的特定本地资源访问资源字符串。正如您从网络表单中知道的那样:

(string)GetLocalResource("Title");

无痛且光滑。框架处理从文化信息代码扩展 (.en-EN.resx) 获取的 .resx 文件。

在带有 Razore View 的 MVC4 中这可能吗?如何?

我注意到我可以设置 Custom Tool .resx 文件上的属性到 PublicResXFileCodeGenerator .这样我就可以从 View 中访问它。例子:
我用丹麦语和英语为 index.cshtml 创建了 2 个资源文件。就像我在网络表单中一样。这是我希望我能写的(Custom Tool Name 属性设置为“ViewResource”):
@ViewResource.Title

巴姆。如果当前文化是丹麦语,标题将是“Forside”,如果是英语,它将是“Home”。但相反,我得到的唯一选择是选择一个特定的文件。并从中选择所需的字符串:
@ViewResource.Index_cshtml_en-EN_resx.Title

那不是动态的。所以我想我可以制作一个扩展类,以某种方式取代 en-EN/da-DK。但是对于如此“简单”并且已经很好且容易集成到网络表单中的东西来说,这似乎确实是相对大量的工作。必须有另一种方式。当然,mvc 团队像其他一切一样为我们提供了一些智能机制 :)

最佳答案

我使用了特殊的 .NET 文件夹 App_LocalResources .

以下是步骤

添加 .resx文件到该文件夹​​(即: Resource.resxResource.es-ES.resx )

右键单击每个 .resx文件并选择 properties并确保选择以下内容

Build Action: Embedded Resource 
Custom Tool: PublicResXFileCodeGenerator
Custom Tool Namespace: Resources

然后在您看来,您可以使用 Resources namespace 来访问您的 .resx 中的文本文件
<h2>@Resources.Resource.Global_Title<h2>
@Resources因为这是您在 Custom Tool Namespace 中提供的名称和 .Resource因为那是 .resx 的名称文件

还要确保将资源设置为 Public
要从任何模型访问资源,只需添加一行
using Resources;  //<<-- This line

namespace Concordia_CRM.Models
{
    public class SolicitudDemo
    {
        [Required]
        [Display(Name = "SD_NombreEmpresa", ResourceType = typeof(Resource))]
        public string NombreEmpresa { get; set; }

...
}

更多细节可以在这个post上找到.

关于razor - MVC4 本地化。从 View 访问 resx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15047272/

相关文章:

asp.net-mvc-4 - 如何强制 Razor 切换回客户端代码?

jquery - 为什么我的 JQuery UI Datepicker 仅在单击时才翻译?

ios - NSDateFormatter:如果应用程序针对该语言进行了本地化,则仅显示本地化日期

asp.net-mvc - 如何将索引应用于 IEnumerable 表达式类型并在 razor View 中并排显示数据

jquery - 无法在 jQuery 中调用 @Html.Action()

asp.net - 带有 CSS 忽略的 Razor View <p></p>

c# - 如何读取 html 帮助元素的名称

c# - 部分 View 和 html 表单 Asp Mvc

jquery - MVC 4 - 如何使用 JavaScript 加载 View

asp.net-mvc - 当它由@Html 助手生成时,如何在 MVC 中更改 'data-val-number' 消息验证