2010-11-03 5 views
2

Je cherche à utiliser App_LocalResources dans mon application MVC, mais je m'interroge sur une implémentation solide.Convertir le fichier LocalResource en objet

Mon idée est de faire une boucle dans le fichier Resx et d'attraper toutes les clés. Le magasin ces clés dans un objet du ViewModel.

Ensuite, dans ma vue, je peux utiliser <%: model.resources.key %> pour extraire les informations. Est-ce que l'un d'entre vous sait comment extraire efficacement toutes les valeurs d'un fichier Ressource et les exporter dans un objet dans le ViewModel? Est-ce seulement possible?

EDIT:

J'ai découvert comment obtenir un seul enregistrement sur le fichier Resx, tout simplement pas la chose.

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

Ce que je dois être en mesure de faire est ce (où les ViewModel.Resources objet est juste un 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) 

A partir de là, je peux extraire toutes les clés à mon avis

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

Remarque, j'avais cette question précédente ouverte, mais les réponses étaient incorrectes, et ma question n'est pas claire. Je m'approche maintenant d'un nouvel angle. Fondamentalement, je ne veux absolument pas 'runat =" server "' n'importe où dans mes vues. http://stackoverflow.com/questions/2970935/how-does-the-app-localresources-work-with-mvc –

+0

à moins que je ne manque quelque chose, cela ne sonne pas comme la bonne approche. Pourquoi auriez-vous besoin de * saisir toutes les clés *? Voulez-vous dire que vous voulez dire remplir 5 traductions différentes pour 1 mot dans le ViewModel? Je serais plus enclin à regarder les informations de culture, puis mettre la chaîne pertinente dans le viewmodel. Quelle boucle est nécessaire? – RPM1984

+0

juste vu votre édition - pourquoi voulez-vous afficher TOUS les fichiers de ressources dans une vue? – RPM1984

Répondre

0

Une raison particulière pour laquelle vous souhaitez utiliser App_LocalResources au lieu de App_GlobalResources ou même un fichier de ressources standard? Si vous avez un fichier resx régulier, vous pouvez y accéder comme ceci:

<%: Resources.ResourceClass.MyResourceString %> 

App_LocalResources ne sont pas vraiment pris en charge dans les vues MVC, plus il semble inefficace (au moins sans mise en cache) d'énumérer toutes les ressources si vous n'allez utilisez 1 ou 2 dans votre vue.

Il est probablement utile si vous créez juste un certain nombre de fichiers de ressources "réguliers" (c'est-à-dire pas ceux de App_GlobalResources). Vous pouvez en avoir autant que vous voulez, par exemple un pour chaque vue.

+0

bien c'est juste cela. Je crée un fichier de ressources View spécifique et énumère tous les enregistrements qui sont juste pour cette vue. Ensuite, je n'ai pas besoin de maintenir un seul fichier GlobalResource qui pourrait devenir incontrôlable quand j'ai 20 ou 30 vues, chacune avec 20 ou 30 touches. –

+0

Vous pouvez avoir autant de fichiers de ressources 'réguliers' que vous le souhaitez (puisqu'il s'agit d'un fichier WAP). – marcind

+0

Je peux faire cette approche, elle ne semble pas aussi propre. –