MC, 16:11 sobota, 12.05.2012 r.
Ilustracja do artykułu: ASP.NET - Bindowanie danych z zasobów (Resources) do kontrolek

ASP.NET - Bindowanie danych z zasobów (Resources) do kontrolek

Tematyka bindowania danych z zasobów (Resources) do poszczególnych elementów strony w ASP.NET jest dla mnie o tyle zajmująca, że po dłuższej przerwie w kontaktach z tą technologią, zawsze stanowi problem. Z tego powodu powstaje ten artykuł, w którym kroku pokażę, co zrobić, by dane z zasobów na pewno się ukazały.

W czym problem?

Zasoby to niezwykle wygodne narzędzie, szczególnie, gdy przygotowywany produkt ma być wydany w kilku wersjach językowych. O ile skorzystanie z nich, a zatem podpięcie danych w nich zawartych, do poszczególnych elementów strony takich jak labele etc. w code-behind nie jest żadną filozofią, o tyle zrobienie tego w kodzie strony wymaga kilku zabiegów, o których zwykłem zapominać. Zatem do rzeczy...

Upublicznienie zasobów

Pierwszym etapem drogi do zbindowania danych z zasobów, powinno być upublicznienie tychże zasobów. Pisałem o tym ostatnio, dlatego zachęcam do przeczytania tego artykułu - ASP.NET - Resources i rozwiązanie problemu - CS0122: '...' is inaccessible due to its protection level

Dodanie odpowiedniego namespace-a

Gdy nasze zasoby będą już dostępne do użycia w kodzie strony, należy dołączyć do niej odpowiednią przestrzeń nazw, w której znajdują się nasze zasoby, tak byśmy mieli do nich dostęp. Zakładając, że te resource-y znajdują się w przestrzeni ProjektWeb.Resources, dodajmy do strony poniższy kod, dołączający ten namespace:
<%@ Import Namespace="ProjektWeb.Resources" %>

Przypinanie treści do kontrolek

Czas na najistotniejszą część zagadnienia, czyli właściwe podpięcie danych do kontrolek. Na potrzeby artykułu założymy, że zasoby nazywają się Texts i zawierają między innymi stringa o nazwie MainPageHeader. Jeżeli chcielibyśmy przypiąć jego zawartość do labela znajdującego się na stronie, należy użyć polecenia podobnego do poniższego:
<asp:Label ID="label1" runat="server" Text="<%# Texts.MainPageHeader %>" />
Istotną sprawą jest użycie odpowiedniego tagu, w tym wypadku jest to <%#, czyli tagu odpowiadającego za bindowanie danych.

Wydawałoby się, że to już wszystko, jednak po sprawdzeniu wyników na stronie okaże się najprawdopodobniej, że pomimo braku komunikatów o błędach, treść nie zostanie wczytana do labela. Pozostała nam jeszcze jedna rzecz do zrobienia.

Wywołanie metody DataBind()

Ostatnim etapem jest wywołanie w code-begind funkcji DataBind(), która pozwoli na podpięcie danych z zasobów do wszystkich elementów strony. Najlepiej jest to zrobić w metodzie Page_Load(), która w najprostszym przypadku może wyglądać następująco:
protected void Page_Load(object sender, EventArgs e)
{
DataBind();
}

I to już wszystko. Po wykonaniu poszczególnych etapów, o których pisałem, dane z zasobów powinny zostać w sposób odpowiedni wczytane we właściwe kontrolki.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: