ASP.NET Query strings

 

W moim ostatnim poście utworzone zostało menu z kategoriami, które znalazło się w master page. Stworzone było ono na podstawie danych znajdujących się bazie, przy czym pobierane były dwie kolumny: pierwsza z identyfikatorem kategorii oraz druga z jej nazwą. Następnie dla każdego z elementów tak utworzonego menu stworzone zostały odnośniki, które wykorzystywały jako parametr numer kategorii otrzymany za pomocą funkcji Eval(“ProductsCategories_ID"). Dzisiaj zatem krótki post o kolejnym mechanizmie zarządzania stanem aplikacji po stronie klienta, jakim są tzw. query strings.

Query string jest to informacja dodana na końcu adresu URL. Rozpoczyna się on od znaku zapytania, po którym występuje co najmniej jedna para atrybut/wartość. W przypadku przykładu wykorzystywanego w poprzedni poście adres taki posiada postać:

http://localhost:52467/ProductsList.aspx?CategoryId=3
 
Jeśli byłaby potrzeba przekazania więcej niż jednej pary atrybut/wartość, to powinny one zostać oddzielone znakiem &. Dzięki temu otrzymujemy prosty mechanizm przekazywanie informacji pomiędzy stronami lub kolejnymi żądaniami dla tej samej strony. Zaznaczyć należy, że mechanizm ten działa tylko jeśli żądanie nowej strony następuje za pomocą odnośnika.

Po przekierowaniu na stronę ustawioną za pomocą odnośnika informację z query string można odczytać podając nazwę atrybutu:

Label2.Text = Request.QueryString["CategoryId"];
 
lub też indeks odpowiedniego atrybutu:
Label2.Text = Request.QueryString[0];
 
Należy jednak zauważyć, że o ile w pierwszym przypadku gdy dany query string nie istnieje, nie zostanie przypisana żadna wartość do kontrolki Label, o tyle w drugim, wykorzystującym ideksator w momencie, gdy query string nie istnieje, rzucony zostanie dodatkowo wyjątek ArgumentOutOfRangeException. Aby zapewnić poprawne działanie kodu w drugim przypadku należałoby sprawdzić czy dany query string istnieje np. odczytując liczbę obecnych query stringów:
if (Request.QueryString.Count > 0)
{
    Label2.Text = Request.QueryString[0];
}
Rezultaty odczytane za pomocą query string są oczywiście typu string.
Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d blogerów lubi to: