1 / 10

Navigation på webstedet

Navigation på webstedet. Kontroller til navigation mellem siderne på webstedet. Motivation. De fleste hjemmesider består af flere sider Hvordan bevæger vi også fra side til side?. Gå til anden side …. To forskellige tilgange: Response.Redirect(url); Server.Transfer(page);

rue
Download Presentation

Navigation på webstedet

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Navigation på webstedet • Kontroller til navigation mellem siderne på webstedet

  2. Motivation • De fleste hjemmesider består af flere sider • Hvordan bevæger vi også fra side til side?

  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. Eksempel • Når en bruger klikker på login-knappen, tjekkes password, ogbrugeren 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..."; }

  5. Destinationssiden • Destinationssiden udtrækker simpelthen data fra Context … 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 btnLogout_Click(object sender, EventArgs e) { this.Server.Transfer("Login.aspx", false /* nulstil tilstand */); }

  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. 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*/); }

  8. Navigationskontroller • Alle tre kontroller baseres på en XML .sitemap fil … web.sitemap <siteMapxmlns="http://schemas.microsoft.com/..." > <siteMapNodetitle="Home"url="~/Default.aspx" description="..."> <siteMapNodetitle="Departments" url="~/departments/default.aspx" > <siteMapNodetitle="Accounting" url="~/departments/accounting.aspx" /> <siteMapNodetitle="Development" url="~/departments/develop.aspx" > ...

  9. Brug af navigationskontrollerne <siteMap> <siteMapNodetitle="Home"url="~/Default.aspx"> <siteMapNodetitle="Products"url="~/Products.aspx" /> <siteMapNodetitle="Contact Us"url="~/Contact.aspx" /> </siteMapNode> </siteMap> • 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 <siteMapNode>-elementer • en hierarkisk menu er defineret ved indlejrede <siteMapNode>-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. Eksempel • En simpel flad menu vist med alle tre menukontroller • Menu • Orientation: Horizontal • StaticDisplayLevels: 2 TreeView SiteMapPath

More Related