在我看来,我想从该文件上的特定本地资源访问资源字符串。正如您从网络表单中知道的那样:
(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.resx
, Resource.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/