Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET.
W dzisiejszym artykule powiemy sobie o nawigacji na stronie, używaniu SiteMap, przekierowywaniu użytkowników itp.
Wybór metody nawigacji po stronie
Istnieje kilka sposobów nawigacji między stronami ASP .NET
Nawigacja po stronie klienta
Chyba najprostszym sposobem nawigacji między stronami jest użycie kontrolki HyperLink i ustawienie właściwości NavigateUrl na adres, do którego chcemy dotrzeć.
Kontrolka HyperLink w naszym kodzie przyjmuje taką postać:
1: <asp:HyperLink ID="Hyperlink1" runat="server"
2: NavigateUrl="~/Navigate.aspx">Idz do navigate</asp:HyperLink>
Kontrolka generuje taki kod html:
1: <a id="HyperLink1" href="Navigate.aspx">Idz do navigate</a>
Powyższy efekt możemy również uzyskać za pomocą java scriptu i buttona. Aby to osiągnąć tworzymy na formatce button i w zdarzeniu onclick wywołujemy funkcję napisaną w javascript.
Kod przycisku:
1: <input id="Button1" type="button"
2: value="Idz do navigate"
3: onclick="return Button1_onclick()" />
Kod funkcji javascript, który umieszczamy w sekcji <head>:
1: <script language="javascript" type="text/javascript">
2: function Button1_onclick()
3: {
4: document.location = "Navigate.aspx";
5: }
6: </script>
Cross-Page Posting
“Cross-page posting” jest pożądany gdy dane są zgromadzone na jednej stronie a wyświetlane i przetwarzane na innej (np. kiedy chcemy przesłać dane z formularza na inną stronę itp.).
W poniższym przykładzie strona nazwana DataCollection.aspx zawiera TextBox nazwany TextBox1 oraz przycisk, który zawiera właściwość PostBackUrl ustawioną na “~/ProcessingPage.aspx”. Właściwość PostBackUrl wskazuje na stronę, do której zostaną przesłane dane w celu późniejszego przetworzenia.
Po wysłaniu danych, strona która przetwarza dane wywołuje kod i wstawia dane w etykiete (która nazywa się LabelData):
1: protected void Page_Load(object sender, EventArgs e)
2: {
3: if(Page.PreviousPage == null)
4: {
5: LabelData.Text = "No previous page in the post";
6: }
7: else
8: {
9: LabelData.Text =
10: ((TextBox)PreviousPage.FindControl("TextBox1")).Text;
11:
12: }
13: }
Przekierowywanie użytkowników
Często zachodzi potrzeba przekierowania użytkownika na inną stronę np. kiedy użytkownik wyśle jakieś dane, które zostaną poprawnie przetworzone, przekierowujemy go na stronę główną itp.
Aby skorzystać z przekierowania w ASP .NET musimy użyć metody Redirect, którą zawiera Page.Response.
Poniższy kod pokazuje jak przekierować użytkownika na stronę “OrderDetails.aspx”, po kliknięciu w przycisk:
1: protected voit ButtonSubmit_Click(object sender, EventArgs e)
2: {
3: Response.Redirect("OrderDetails.aspx");
4: }
Używanie kontrolki SiteMap
Site map jest to plik XML posiadający rozszerzenie .sitemap. Zawarta w nim jest struktura, mapa nawigacji naszej strony. Aby dodać węzły, dodajemy elementy <siteMapNode>. Posiadają one atrybuty title (który jest wyświetlany użytkownikowi), url (który mówi do jakiej strony będzie nawigacja) oraz description (który posiada informację na temat strony). SiteMap może wyglądać np. tak:
1: <?xml version="1.0" encoding="utf-8"?>
2: <siteMap>
3: <siteMapNode title="Menu" description="Menu strony">
4: <siteMapNode title="Aktualnosci" description="Aktualnosci" url="~/Aktualnosci/default.aspx" />
5: <siteMapNode title="Kadra" description="Kadra" url="~/Kadra/Kadra.aspx" />
6: <siteMapNode title="asd" description="asd" url="~/asd\asd.aspx" />
7: </siteMapNode>
8: </siteMap>
Używanie klasy SiteMap
Dzięki klasie SiteMap mamy dostęp do pliku z nawigacją z poziomu Code-behind. W klasie tej mamy dwie główne właściwości: RootNode oraz CurrentNode. Obie zwracają instancję SiteMapNode. Obiekt SiteMapNode reprezentuje więzły z site map oraz posiada właściwości Title, Url oraz Description. W celu uzyskania dostępu do węzłów musimy skorrzystać z właściwośći ParentNode, ChildNodes, NextSibling, PreviousSibling. Poniżej przykład użycia klasy SiteMap:
1: protected void Button1_Click(object sender, EventArgs e)
2: {
3: Response.Redirect(SiteMap.CurrentNode.ParentNode.Url);
4: }
Wyświetlanie mapy strony
Aby wyświetlić informacje zawarte w pliku XML naszej mapy strony, musimy umieścić kontrolkę nawigacji na stronie. Kontrolka ta potrafi używać pliku site map bądź kontrolki SiteMapDataSource.
SimpleMapDataSource jest kontrolką stworzoną do programowego dostępu do pliku site map. Po przeciągnięciu na formatkę, kontrolka połączy się automatycznie z plikiem site mapy.
Do zobrazowania naszej mapy strony możemy użyć gotowych kontrolek np.
Menu:

TreeView:
SiteMapPath:
