ASP.NET HttpContext.GetLocalResourceObject() throws exception InvalidOperationException
Disons que nous avons une telle structure du site:
App_LocalResources
|- A. aspx.resx
|- B. aspx.resx
A. aspx
B. aspx
Maintenant, j'utilise HttpContext.GetLocalResourceObject("~/A. aspx", "Key1") en A. aspx.cs, et il fonctionne très bien.
Mais si j'utilise HttpContext.GetLocalResourceObject("~/A. aspx", "Key1") dans B. aspx.cs, il déclenche une exception:
La classe de ressource pour cette page n'a pas été trouvé. Veuillez vérifier si le fichier de ressource existe et essayez à nouveau.
Détails De L'Exception: System.InvalidOperationException: La classe de ressource pour cette page n'a pas été trouvé. Veuillez vérifier si le fichier de ressource existe et essayez à nouveau.
Comment puis-je résoudre ce problème? Je veux lire les ressources locales à partir d'une page externe, et je ne veux pas lire le .fichier resx moi-même. Merci 🙂
Mise à JOUR: Dans mon cas, il y a quelques "data.xml" les fichiers(ils sont dans des répertoires différents, et ont des éléments comme <key name='Key1' value='value1' />
), et le contenu sera rendu au format html.
Mais les noms de clé dans la data.xml doit être localisée avant de rendu (différents data.xml contiennent des clés différentes).
Par exemple, l'data.xml a un tel élément:
<key name='CategoryId' value='3' />
Dans la suite de la page html, je veux afficher la Catégorie "Id = 3" pour la culture en-US, et "类别=3" pour zh-CN, la culture, etc.
Donc je pense que je peux créer des fichiers d'après le modèle "data.xml.??-??.resx
" dans le App_LocalResources
dossier, puis utilisez le HttpContext.GetLocalResource()
pour chaque data.xml pour récupérer la version localisée de noms de clé. De cette façon, je n'avez pas besoin de lire le fichier xml moi-même. Est-il possible?
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas la façon que les ressources locales sont supposées être utilisées. Les ressources locales ne sont valables que pour une page ou d'un contrôle. Vous devriez utiliser les ressources mondiales dans votre cas.
De MSDN
Et pourrait aussi être utile pour vous de vérifier comment accéder à des ressources par programme
Que Claudio Redi recommandé, à l'utilisation des Ressources Mondiales fichiers.
Je voudrais créer un par fichier xml dans le format "nom de fichier.resx", donc dans votre exemple, vous auriez du nom il
Data.resx
.Définir le "Nom" de la ressource à votre "nom" de l'attribut et la Valeur égale à la traduit par "nom".
Par exemple, dans
Data.resx
, vous auriezName=CategoryId, Value=Category Id
. DansData.zh-CN.resx
, vous auriezName=CategoryId, Value=类别
.Celui que vous avez données dans les fichiers de ressources, vous souhaiterez probablement créer une classe qui encapsule les fonctionnalités XML de recherche et de localisation de votre dans votre application. Quelque chose comme ceci devrait fonctionner:
Essayez les étapes suivantes:
Étape 1: Supprimer les fichiers temporaires de votre site web à partir d'
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Fichiers
Étape 2 - Nettoyer et Reconstruire votre Solution.
Étape 3 - assurez-vous que votre fichier de Ressources dans le App_LocalResources a le même nom que la page qui a cette question (et à la fois App_LocalResources et la page sont dans le même dossier).
Votre Application devrait être OK alors.
http://iymbas.blogspot.com