Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet.

Lignende præsentationer


Præsentationer af emnet: "Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet."— Præsentationens transcript:

1 Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet

2 Tilstandsstyring/Otto Knudsen 2 Motivation De fleste hjemmesider består af flere sider Hvordan bevæger vi også fra side til side?

3 Tilstandsstyring/Otto Knudsen 3 Gå til anden side … To forskellige tilgange: Response.Redirect(url); Server.Transfer(page); Response.Redirect(url) url kan være lokal eller en fuldt kvalificeret URL: "http://..." returnerer til klienten og beder browseren redirigere til den givne URL Server.Transfer(page) siden skal være lokal, i den samme eller i en anden ASP.NET applikation mere effektiv end Response.Redirect ; men begrænset til lokale sider

4 Tilstandsstyring/Otto Knudsen 4 Eksempel Når en bruger klikker på login-knappen, tjekkes password, og brugeren viderestilles, hvis ok … hvordan overføres data mellem siderne? i dette tilfælde anvendes Context State… protected void btnLogin_Click(object sender, EventArgs e) { DataTier.DataAccess data; long id; string pwd; if (!this.IsValid) return; id = long.Parse(this.txtStudentID.Text); pwd = this.txtPassword.Text; data = new DataTier.DataAccess("Students.mdb"); if (data.passwordMatch(id, pwd)) { this.Context.Items["ID"] = id; this.Context.Items["DataAccess"] = data; this.Server.Transfer("StudentInfo.aspx", true /* bevar tilstand*/); } else this.lblErrorMsg.Text = "Incorrect id or password..."; } protected void btnLogin_Click(object sender, EventArgs e) { DataTier.DataAccess data; long id; string pwd; if (!this.IsValid) return; id = long.Parse(this.txtStudentID.Text); pwd = this.txtPassword.Text; data = new DataTier.DataAccess("Students.mdb"); if (data.passwordMatch(id, pwd)) { this.Context.Items["ID"] = id; this.Context.Items["DataAccess"] = data; this.Server.Transfer("StudentInfo.aspx", true /* bevar tilstand*/); } else this.lblErrorMsg.Text = "Incorrect id or password..."; }

5 Tilstandsstyring/Otto Knudsen 5 Destinationssiden Destinationssiden udtrækker simpelthen data fra Context … protected void btnLogout_Click(object sender, EventArgs e) { this.Server.Transfer("Login.aspx", false /* nulstil tilstand */); } protected void btnLogout_Click(object sender, EventArgs e) { this.Server.Transfer("Login.aspx", false /* nulstil tilstand */); } protected void Page_Load(object sender, EventArgs e) { // Er brugeren kommet direkte hertil? object obj = this.Context.Items["ID"]; if (obj == null) this.Response.Redirect("Login.aspx", true /* afslut nu */); long id; DataTier.DataAccess data; id = System.Convert.ToInt64(obj); data = (DataTier.DataAccess) this.Context.Items["DataAccess"]; this.DataGrid1.DataSource = data.GetStudent(id); this.DataGrid1.DataBind(); } protected void Page_Load(object sender, EventArgs e) { // Er brugeren kommet direkte hertil? object obj = this.Context.Items["ID"]; if (obj == null) this.Response.Redirect("Login.aspx", true /* afslut nu */); long id; DataTier.DataAccess data; id = System.Convert.ToInt64(obj); data = (DataTier.DataAccess) this.Context.Items["DataAccess"]; this.DataGrid1.DataSource = data.GetStudent(id); this.DataGrid1.DataBind(); }

6 Tilstandsstyring/Otto Knudsen 6 Overførsel af data mellem sider Der er flere mulige teknikker … Tilføj en QueryString til URL'en og brug Response.Redirect data begrænser sig til URL-kompatible strenge Gem data midlertidigt i Context state og brug Server.Transfer virker fint, hvis data ikke skal bevares over længere tidsrum Gem data i Session State God løsning, hvis data skal gemmes over længere tidsrum Virker med begge redirigeringsmetoder http://www.site.com/test.aspx?name=joe&age=42 Context.Items["data"] =...;

7 Masterpages/Otto Knudsen 7 Navigation Vi så tidligere, hvordan vi via koden kunne gå fra side til side: ASP.NET 2.0 giver også mulighed for navigation på hele webstedet: Menu Traditional menu (statisk visning eller dynamisk opdateret) TreeView Hierarkisk visning med billeder og tekst SiteMapPath "Brødkrumme"-kontrol, som viser stien efterhånden som brugeren arbejder sig igennem siderne protected void btnLogout_Click(object sender, EventArgs e) { this.Server.Transfer("Login.aspx", false /*clear state*/); } protected void btnLogout_Click(object sender, EventArgs e) { this.Server.Transfer("Login.aspx", false /*clear state*/); }

8 Masterpages/Otto Knudsen 8 Navigationskontroller Alle tre kontroller baseres på en XML.sitemap fil … web.sitemap...

9 Masterpages/Otto Knudsen 9 Brug af navigationskontrollerne Opret først.sitemap-filen: Website menu > Add New Item > Site Map Opret en menustruktur i web.sitemap filen vha. XML: en flad menu er defineret ved ét niveau af indlejrede -elementer en hierarkisk menu er defineret ved indlejrede -elementer Tilføj en SiteMapDataSource –kontrol til (master-) siden træk og slip fra værktøjskassen … Tilføj en navigationskontrol til (master-) siden sæt DataSourceID –egenskaben til SiteMapDataSource kontrollen [SiteMapPath bindes automatisk]

10 Masterpages/Otto Knudsen 10 Eksempel En simpel flad menu vist med alle tre menukontroller Menu Orientation: Horizontal StaticDisplayLevels: 2 TreeView SiteMapPath


Download ppt "Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet."

Lignende præsentationer


Annoncer fra Google