如何在使用ASP.NET MVC Razor的视图中访问全局资源

22

使用ASP.NET MVC Razor,我在App_GlobalResources中有一个名为General.resxGeneral.fr.resx的资源文件,它们分别包含名称值对"Hello"和"Hello"以及"Hello"和"Bonjour"。

我该如何从我的视图中引用这些资源?

这些方式不起作用:

@Html.Resource("General.Hello")
@Html.Resource("GlobalResources.Hello")
@Html.Resource("GlobalResources.General.Hello")
@Html.Resource("GlobalResources, General.Hello") 

1
如果您的资源文件在视图中没有显示,则需要执行以下操作:https://holyhoehle.wordpress.com/2010/02/20/making-global-resources-public/ - Saad A
3个回答

46

试试这个,

@Resources.General.Hello

语法:Resources.[资源名称].[属性]


1
我知道这一定是某些简单的东西。谢谢! - FiveTools
1
@FiveTools,我不理解你的评论。如果你想在你的MVC应用程序中实现全球化,这是我能给你的最佳资源:http://adamyan.blogspot.in/2010/02/aspnet-mvc-2-localization-complete.html。 - VJAI
5
Dismissile,你不应该简单地告诉别人“我强烈建议不要采用这种方法”。你应该解释为什么不鼓励使用这种方法,这样可以帮助提问者和其他人(顺便说一句,我真的意识到在MVC应用程序中使用App_GlobalResources/App_LocalResources可能会带来问题)。 - VJAI
抱歉,马克,我是在回复解雇时说的 - 我认为你的方法是最简单和最好的解决方案。 - FiveTools
1
@Dismissile 如果我需要在15个不同的视图中使用这个资源,那么我就必须创建15个不同的现有模型更改,然后当另一个开发人员在6个月后重新访问源代码并将“hello”更改为“goodbye”时,他们将需要在控制器和视图中进行更改。保持简单。我错了吗? - FiveTools

1

访问视图中的资源文件值

添加此命名空间

@using System

然后像这样显示该值。
@ResourceFile.Address  //ResouceFile is the name of the ResouceFile

当使用环境文化线程时,将使用此方法。


2
从审核队列中:我可以请求您在源代码周围添加一些上下文吗?仅有代码的答案很难理解。如果您能在帖子中添加更多信息,这将有助于提问者和未来的读者。 - RBT

0

你需要引用你的命名空间:

@GeneralResxNamespace.General.Hello

你可以通过在/Views/Web.config文件中添加命名空间来更轻松地完成这个操作,在命名空间部分下面添加以下部分:
<add namespace="*YourProjectNamespace*.*ResourcesNamespace*.Resources" />

然后你就可以像这个例子一样使用没有命名空间的资源:

General.Hello

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接