ASP.NET HttpContext.GetLocalResourceObject() wirft eine InvalidOperationException
Sagen wir, wir haben eine solche Website-Struktur:
App_LocalResources
|- A. aspx.resx
|- B. aspx.resx
A. aspx
B. aspx
Nun benutze ich HttpContext.GetLocalResourceObject("~/A. aspx", "Key1") in A. aspx.cs, und es funktioniert gut.
Aber wenn ich HttpContext.GetLocalResourceObject("~/A. aspx", "Key1") in B. aspx.cs, wirft es eine Ausnahme:
Die Ressourcenklasse für diese Seite wurde nicht gefunden. Bitte prüfen Sie, ob die resource-Datei vorhanden ist, und versuchen Sie es erneut.
Exception Details: System.InvalidOperationException: Die Ressourcenklasse für diese Seite wurde nicht gefunden. Bitte prüfen Sie, ob die resource-Datei vorhanden ist, und versuchen Sie es erneut.
Wie kann ich dieses problem beheben? Ich möchte Lesen Sie die lokalen Ressourcen von einer externen Seite, und das möchte ich nicht Lesen .resx-Datei selbst. Vielen Dank 🙂
UPDATE: In meinem Fall, es sind einige "data.xml" Dateien(in verschiedenen Ordnern und Elementen wie <key name='Key1' value='value1' />
), und der Inhalt wird als html gerendert.
Aber die key-Namen in der data.xml sollte lokalisiert werden, bevor rendering (verschiedene data.xml enthalten verschiedene Schlüssel).
Beispielsweise die data.xml hat ein solches element:
<key name='CategoryId' value='3' />
In der Ergebnis-html-Seite, ich möchte zur Anzeige von "Kategorie Id = 3" für die en-US-Kultur, und "类别=3" für Kultur zh-CN, etc.
So, ich denke, ich kann einige Dateien nach dem Muster "data.xml.??-??.resx
" in der App_LocalResources
Ordner, dann verwenden Sie die HttpContext.GetLocalResource()
für jeden data.xml zum abrufen der lokalisierten Tastennamen. So, wie ich nicht brauchen, um das xml Lesen mich. Ist es möglich?
InformationsquelleAutor Mouhong Lin | 2010-06-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist nicht der Weg, die lokale Ressourcen eingesetzt werden sollen. Lokale Ressourcen sind nur gültig für eine Seite oder zu kontrollieren. Sollten Sie Globale Ressourcen verwenden, in Ihrem Fall.
Vom MSDN
Und könnte auch sinnvoll sein, für Sie zu prüfen, wie Zugriff auf Ressourcen programmgesteuert
nun, dann müssen Sie zur Nutzung von lokalen Ressourcen für Seite A Seite A und die lokalen Ressourcen für Seite B Seite B 🙂 Gekreuzt Referenzen sind nicht erlaubt
Aber, wenn wir nur Zugriff auf die A. aspx.resx-auf A. aspx, warum gibt es die HttpContext.GetLocalResource () - Methode? Wir haben bereits Zugriff auf die A. aspx.resx-auf A. aspx durch die Nutzung dieser.GetLocalResourceObject () - Methode.
Ich würde sagen, nicht für access cross Seite Ressourcen. Ressourcen, die verwendet werden auf mehr als einer Seite sollten global sein. Wenn man etwas tun kann, bedeutet nicht, dass Sie es tun sollen 🙂 Der richtige Ansatz für gemeinsame Ressourcen ist global storage.
Hi, in meinem Fall, es sind einige data.xml Dateien(Sie sind in verschiedenen Verzeichnissen, und Elemente wie "<key name='Key1'='value1' />"), und der Inhalt wird als html gerendert. Aber die key-Namen in der data.xml sollte lokalisiert werden, bevor rendering (verschiedene data.xml enthalten verschiedene Schlüssel). Also ich denke, vielleicht kann ich einige Dateien nach dem Muster "Daten.xml.??-??.resx" im App_LocalResources-Ordner, dann verwenden Sie die HttpContext.GetLocalResource() für jede data.xml zum abrufen der lokalisierten Tastennamen. So brauche ich nicht zu Lesen, die xml selber.
InformationsquelleAutor Claudio Redi
Als Claudio Redi empfohlen, verwenden, Globale Ressourcen-Dateien.
Ich würde erstellen Sie eine pro-xml-Datei im format "Dateiname.resx", also in deinem Beispiel würden Sie es nennen
Data.resx
.Stellen Sie die "Name" in der Ressource zu Ihr "name" - Attribut und dem Wert gleich die übersetzte "Namen".
Beispielsweise in
Data.resx
hätten SieName=CategoryId, Value=Category Id
. InData.zh-CN.resx
hätten SieName=CategoryId, Value=类别
.Haben Sie die Daten in die Ressource-Dateien, würden Sie wahrscheinlich wollen eine Klasse umschließt die Funktionalität der XML-Suche und Lokalisierung für Ihre Anwendung. So etwas wie dies funktionieren sollte:
Was ist, wenn jemand liefert eine Zeichenfolge, die durch das plug-in, dass Sie nicht eine übersetzung? Oder müssen Sie das plug-in als auch? An diesem Punkt, Sie sind auch außerhalb der Anwendungsfälle für .NET-Lokalisierung und müssen Sie wahrscheinlich zu kommen mit einer Idee, die gut funktioniert für Ihr system stattdessen zwingen Sie es zu passen in .NET-Lokalisierung.
InformationsquelleAutor Greg
Versuchen Sie die folgenden Schritte aus:
Schritt 1 - Löschen der temp-Dateien Ihrer Website von
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Dateien
Schritt 2 - Reinigen und neu erstellen Ihre Lösung.
Schritt 3 - Stellen Sie sicher, dass Ihre Ressource-Datei im App_LocalResources-Ordner hat den gleichen Namen wie die Seite, die dieses Problem hat (und beide App_LocalResources und die Seite im selben Ordner).
Ihre App sollte Sie dann OK.
http://iymbas.blogspot.com
InformationsquelleAutor Reza