将LocalResource文件转换为Object

时间:2010-11-03 20:46:04

标签: asp.net-mvc localization

我希望在我的MVC应用程序中使用App_LocalResources,但我想知道一个可靠的实现。

我的想法是遍历Resx文件并获取所有密钥。将这些键存储在ViewModel中的对象中。

然后在我的视图中,我可以使用<%: model.resources.key %>来提取信息。

你们中的任何人都知道如何有效地提取资源文件的所有值并将它们转储到ViewModel中的Object中吗?这甚至可能吗?

编辑:

我已经发现如何从Resx文件中获取单个记录,而不是整个文件。

        Dim whats_next = HttpContext.GetLocalResourceObject("~/views/about/faq.aspx", "whats_next").ToString
        ViewData("whats_next") = whats_next
        Return View()

我需要做的就是这个(ViewModel.Resources对象只是List(Of KeyValuePairs)

        Dim ViewModel As Domain.FAQViewModel = New Domain.FAQViewModel()
        ViewModel.Resources = ''# enumerate APPROPRIATE LOCAL resource file and store all keys
        Return View(ViewModel)

从这里,我可以提取我视图中的所有键

        <%: model.Resources.ResourceKey1 %><br />
        <%: model.Resources.ResourceKey2 %>

1 个答案:

答案 0 :(得分:0)

您是否想要使用App_LocalResources而不是App_GlobalResources甚至是常规资源文件?如果你有一个常规的resx文件,你可以像这样访问它:

<%: Resources.ResourceClass.MyResourceString %>

在MVC视图中并不真正支持App_LocalResources,如果您只想在视图中使用1或2,则枚举所有资源似乎效率低下(至少没有缓存)。

如果你只创建一些“常规”资源文件(即不是App_GlobalResources中的文件),那可能很容易。您可以拥有任意多个,例如每个视图一个。