2012-03-28 79 views
12

我使用来自Code52的ASP.NET Internationalization,http://code52.org/aspnet-internationalization/使用(语言)资源文件。从剃须刀视图引用资源文件

从我的控制器我引用我想这样

ViewBag.Message = Language.Index_Title; 

是否有可能直接在(剃刀)观看基准值的字符串? 类似这样的:@Resources.Language.Index_Title;

+0

所有的问题都解决了,当我改变了资源文件属性: 生成操作:嵌入式的资源 复制到输出目录:不复制 – 2012-03-28 22:59:33

+0

我发现,认为不会立即反映更改。在更改/重命名/移动资源文件后,关闭并重新打开视图。 – 2012-06-15 14:10:40

回答

3

Try @ ViewContext.HttpContext.GetGlobalResourceObject(classKey,resourceKey)。希望这可以帮助

10

在你的web.config中有“页面”部分......你需要添加你的资源命名空间......你不需要在每个页面中使用“using”声明它, 。

<pages> 
    <namespaces> 
    <add namespace="System.Web.Helpers" /> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="System.Web.WebPages" /> 
    <add namespace="Your.Resources.Namespace" /> <!--ADD THIS LINE--> 
    </namespaces> 
</pages> 

然后,假设您的资源文件被称为“语言”,在你的Razor视图使用:

@Language.Index_Title 
+0

对不起,但这对我不起作用,但intellisense表明它没有问题... – 2012-03-28 21:00:51

+1

@ChristerKolterjahn,这是我在我的项目中执行此操作时所遵循的教程:http://afana.me/post /aspnet-mvc-internationalization-part-2.aspx – Romias 2012-03-29 02:31:23

+2

我相信这需要添加到视图web.config,而不是根web.config – 2012-03-29 10:12:11

4

修改您的资源文件中的自定义工具属性,你必须添加值“PublicResXFileCodeGenerator“以及在您的视图中,您可以使用资源文件。