2010-02-26 16 views
6

Moje obecne rozwiązanie składa się z kilku bibliotek klasy i witryny internetowej. Jestem w trakcie globalizacji aplikacji i zdałem sobie sprawę, że moje zasoby muszą być dostępne dla wszystkich projektów, nie tylko dla witryny, więc umieszczenie moich zasobów w folderze App_GlobalResources nie działa.Jak uzyskać dostęp do zasobów zewnętrznych z witryny Aspx

Dodałem moje zasoby do jednej z moich bibliotek klasy, a teraz próbuję dowiedzieć się, jaki jest najlepszy sposób dostępu do zasobów z mojego znacznika. Kiedy moje zasoby były w folderze App_GlobalResources udało mi się uzyskać do nich dostęp za pomocą wyrażeń takich jak to:

<$ Resources: MyApp.Name %> for server controls 

Albo

<%=Resources.MyApp.Name %> for plain text 

Jaki jest najlepszy sposób dostępu do swoich zasobów z mojej strony aspx pliki teraz, gdy znajdują się w bibliotece DLL biblioteki klas?

Dzięki za pomoc!

+0

Możliwe, że projekt ASPX będzie zależny od projektu biblioteki klas. Jeśli po prostu dodajesz bibliotekę DLL, a nie sam projekt biblioteki klas, upewnij się, że masz odniesienie do biblioteki DLL w twoim projekcie. –

Odpowiedz

4

Znalazłem świetny artykuł, który omawia Rozszerzanie Resource-Provider Model. Pozwala na użycie wyrażeń, aby uzyskać dostęp do zasobów zewnętrznych:

Składnia wyrażenia $ Resources dla domyślnego modelu dostawcy (jawne zasoby globalne) jest następująca.

<%$ Resources: [resourceType], [resourceKey] %> 

To samo wyrażenie może zostać użyte w celu uzyskania dostępu do zasobów zewnętrznych po skonfigurowaniu ExternalResourceProviderFactory z następującą zmianą składni.

<%$ Resources: [assemblyName]|[resourceType], [resourceKey] %> 

Na przykład, aby odzyskać zasobu z zespołu CommonResources.dll, z globalnego typu zasobu „CommonTerms”, by użyć następującego wyraźny wyraz.

<asp:Label ID="labGlobalResource" runat="server" Text="<%$ Resources:CommonResources|CommonTerms, Hello %>" ></asp:Label> 
0

Używam biblioteki klasy Util, która oprócz wielu innych użytecznych klas i funkcji zawiera klasę i18n z publiczną wspólną funkcją, która zwraca wartość (ciąg) zasobu w pliku zasobów na podstawie jego nazwy i LCID . dodać odwołanie do tego dll w moich projektów internetowych i gdzie kiedykolwiek potrzebne, powiedzmy w pliku kodu na naklejkę piszę:

MyLabel.Text = i18n.GetResourceString("MyStringName",1033) 

można znaleźć bardziej szczegółowy opis metody używam here Ufam, że dzięki podanym tam informacjom można przyjąć lub dostosować moje rozwiązanie.

+0

To działa dla kodu z tyłu, ale co z tym znacznikiem? – mga911

+0

Przykro mi, ale nie rozumiem. Możesz napisać w znaczniku: Założenie zespół nazywa się Util.dll. Ale nadal będziesz musiał zadzwonić do MyLabel.DataBind z kodu źródłowego, aby zadziałał. Możesz równie dobrze napisać: MyLabel.Text = i18n.GetResourceString ("MyStringName", 1033) bezpośrednio w kodzie źródłowym onload. – esjr

+0

Nawiasem mówiąc, działałoby to bez kodu z tyłu:

<%=Util.i18n.GetResourceString("NameText", 1033)%>
Ponownie przy założeniu, zespół to Util.dll, do którego odwołuje się twój projekt, a GetResourceString i18n jest publiczną wspólną funkcją. – esjr

Powiązane problemy