【发布时间】:2010-11-03 20:46:03
【问题描述】:
我希望在我的 MVC 应用程序中使用 App_LocalResources,但我想知道一个可靠的实现。
我的想法是遍历 Resx 文件并获取所有密钥。将这些键存储在 ViewModel 的对象中。
然后在我的视图中,我可以使用<%: model.resources.key %>提取信息。
你们中有人知道我如何有效地提取资源文件的所有值并将它们转储到 ViewModel 中的对象中吗?这甚至可能吗?
编辑:
我发现了如何从 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 %>
【问题讨论】:
-
注意,我确实打开了这个先前的问题,但答案不正确,我的问题不清楚。我现在从一个新的角度来接近它。基本上,我绝对不希望
runat="server"在我的视图中的任何位置。 stackoverflow.com/questions/2970935/… -
除非我遗漏了什么,否则这听起来不像是正确的方法。为什么你需要抓住所有的钥匙?您是说要在 ViewModel 中为 1 个单词填充 5 种不同的翻译吗?我会更倾向于查看文化信息,然后将相关字符串放入视图模型中。需要什么循环?
-
刚刚看到您的编辑 - 为什么要在视图中显示所有资源文件?
-
我希望能够在视图中从单个对象访问它们。
model.resources.resourcekey -
我不想要所有的本地人......只想要相关的。
If user is French, Grab the FAQ resource in French, and store ALL keys for FAQ.aspx, Then in the view, spit out the appropriate value depending on the Key requested