Kas*_*kov 14 localization resx razor asp.net-mvc-4 razor-2
在我看来,我想从该文件上的特定本地资源访问资源字符串..正如您从网络表单中知道的那样:
(string)GetLocalResource("Title");
Run Code Online (Sandbox Code Playgroud)
无痛而顺畅.框架处理从文化信息代码扩展(.en-EN.resx)获取的.resx文件.
这是可能的MVC4与Razore视图?如何?
我注意到我可以Custom Tool
在.resx文件上设置属性PublicResXFileCodeGenerator
.这样我就可以从视图中访问它了.示例:我已经为index.cshtml创建了丹麦语和英语的2个资源文件.就像我在网络表单中一样.这是我希望我能写的(Custom Tool Name
属性设置为'ViewResource'):
@ViewResource.Title
Run Code Online (Sandbox Code Playgroud)
巴姆.如果现在的文化是丹麦语,标题将是"Forside",如果是英语,它将是"Home".但相反,我给出的唯一选择是选择一个特定的文件.然后从中选择所需的字符串:
@ViewResource.Index_cshtml_en-EN_resx.Title
Run Code Online (Sandbox Code Playgroud)
那不是动态的.所以我想我可以制作一个以某种方式取代en-EN/da-DK的扩展类.但对于那些"简单"并且已经很好并且易于集成到网络表单中的东西来说,这似乎相当多.必须有另一种方式.当然,mvc团队为我们提供了一些智能机制,就像其他一切:)
Mau*_*rez 36
我使用了特殊的.NET文件夹App_LocalResources
.
这是步骤
将.resx
文件添加到该文件夹(即:Resource.resx
,Resource.es-ES.resx
)
右键单击每个.resx
文件,然后选择properties
并确保选中以下内容
Build Action: Embedded Resource
Custom Tool: PublicResXFileCodeGenerator
Custom Tool Namespace: Resources
Run Code Online (Sandbox Code Playgroud)
然后在您的视图中,您可以使用Resources
名称空间来访问.resx
文件中的文本
<h2>@Resources.Resource.Global_Title<h2>
Run Code Online (Sandbox Code Playgroud)
@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; }
...
}
Run Code Online (Sandbox Code Playgroud)
更多细节可以在这篇文章中找到.
小智 9
在Visual Studio的Resources Designer中,我们有一个带有标签的Combo Box:Access Modifier,通常设置为:internal,使其工作设置为:Public.
如果您创建一个名为f.ex的文件夹."资源"并添加2个文件Index.resx和Index.da-DK.resx您应该能够在剃刀视图中以这样的方式访问它们.
@Resources.Index.Title
Run Code Online (Sandbox Code Playgroud)
然后根据当前的线程文化,它将从正确的文件中选择文本