如何在剃刀声明中包含一个字符串

时间:2014-04-21 20:46:09

标签: asp.net-mvc razor

是否可以在剃刀声明中包含字符串?

例如,以下代码:

Page.Title = Resources.HomeStrings_en.Title;

我希望如此:

var locale = "_en";
Page.Title = Resources.HomeStrings + locale + .Title;

显然,这不会编译,但我怎么能这样做呢?

2 个答案:

答案 0 :(得分:1)

资源是静态类,每个键都有一个属性,所以你不能这样做。

您需要使用ResourceManager。

var resset= Resources.ResourceManager.GetResourceSet(Thread.CurrentThread.CurrentUICulture, true, false);
resset.GetString("HomeStrings" + "_en" + ".Title")

让我想到的一件事是...... .NET Resources使用Culture来处理语言更改...从正确的文件中检索数据。而且您似乎使用一个文件来保存所有语言......但不建议这样做。

在这里,您可以获得ASP.NET MVC中的国际化教程:http://afana.me/post/aspnet-mvc-internationalization.aspx

或者这个: http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx

答案 1 :(得分:1)

您可以使用Reflection。例如,如果HomeStringsResources的属性,您可以尝试以下操作:

PropertyInfo property = Resources.GetType().GetProperty("HomeStrings" + locale);
Page.Title = (property.GetValue(Resources) as the type of HomeStrings).Title;

当然它适用于属性,方法等。只需确保执行所有必要的测试:property != null(... as the type of HomeStrings) != null,...