Artiklar » .NET » <asp:Hyperlink> - Ändra URL-adresser från ett ställe

 
 

<asp:Hyperlink> - Ändra URL-adresser från ett ställe

Författare: mactommy
Datum: den 18 mars 2009
Antal lästa: 2857
Ej stjärnmärkt

I tidigare artikel så har jag enkelt visat hur en asp:Hyperlink fungerar i sin enkelhet. Nu tänkte jag visa ett enkelt sätt att fixa till länkadressen via en egen class. Varför jag visar detta är för att bygger man en sida och bestämmer sig för att köra URLrewrite i efterhand, så kommer det finnas många ställen som man behöver modifiera för att länkarna ska bli rätt. Genom en egen class innebär att vi anropar classen och classens metod returnerar länkadressen. Låter det krångligt?

Vi börjar åter igen med våran Hyperlink, Kod:
<asp:HyperLink ID="HyperLink1" runat="server">Hyperlink</asp:HyperLink>

och så går vi över till CodeBehind. Det vi börjar med nu är att skapa en ny class i mappen "App_Code" som heter "Hyperlink.cs". Vi rensar upp den lite så att vi har den någorlunda ren, Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Class för att skapa länkar.
/// </summary>
public class Hyperlink
{
}

För att visa ändringen ifrån en länkadress till en annan, så kan vi börja med en klassisk länk med en querystring. Vi lägger till en public static string med namnet på våran metod, Kod:
public static String blogg(int id)
{
  return "~/blogg.aspx?id=" + id.ToString();
}

I våran metod skickar vi in ID för blogginlägget och skapar våran länkadress. Inget hokuspokus eftersom vi skapar en textsträng som sedan returneras tillbaka på direkten.

För att anropa våran metod så anropar vi classen enkelt ifrån default.aspx.cs med, Kod:
Hyperlink1.NavigateUrl = Hyperlink.blogg(4);

Det som händer är att vi skickar iväg en 4:a till metoden och får en text returnerad som läggs in i våran NavigateUrl. ~ (tilde) gör så att blogg.aspx hämtas ifrån rooten oavsett var man befinner sig på servern.

Prova koden och se om länken har ändrats till det som står i classen.

Nu går vi in och bestämmer oss för att köra URLrewrite på sidan och då vill vi att länken ska se ut så här istället "http://mypage.se/blogg/4/ ". Nu räcker det med att vi går in i våran class och ändrar return "~/blogg.aspx?id=" + id.ToString(); till return "~/blogg/" + id.ToString(); och länkarna är ändrade på alla ställen där vi har anropat Hyperlink.blogg();.

Vill vi även lägga till rubriken i länken så kan vi komplettera med att antingen lägga till "string title" i våran metod, Kod:
public static String blogg(int id, string title)

Nu kommer sidan klaga på att vårat anrop saknar en parameter och vi får upp en lista på dessa så vi enkelt hittar rätt ställen så vi kan peta in rubriken. I våran text som returneras ändrar vi t.ex. nu länken till detta för att få med rubriken, Kod:
return "~/blogg/" + id.ToString() + "/" + title + ".aspx";

Vi får här se till att eliminera alla tecken som inte hör hemma i en webadress.

Eller om vi inte vill ändra våra metod-anrop så kan vi lägga till så att våran metod hämtar rubriken på bloggen och lägger till den i metoden, men det blir en annan artikel.

Detta är då för att enkelt visa hur man med en egen class kan göra livet lite enklare om man nu får för sig att ändra på länkarna.
Att köra länkadressen URLrewritade, typ http://mypage.se/blogg/4/ innebär att ni måste lägga till ev. stöd för URLrewriting på sidan. Det går inte bara att ändra och hoppas att det fungerar.

Hoppas att detta inte kändes så krångligt och att ni har fått se en enkel användnig av HyperLink med anrop mot en metod i en separat class, för att enbart behöva ändra länkar på sidan från ett ställe. Jag använder detta som standard på alla länkar som finns på minst två ställen på sidan, eftersom jag inte vet om en länk bara kommer att finnas på en sida så gör jag detta med alla länkar... i fall att...
 
     

  » Logga in  
 
Användarnamn

Lösenord

 
     

  » Bli medlem  
  Bli medlem på ASPsidan!  
     

     
  Microsoft  
     

  » Partners  
  Comsolvia  
     
  » ANNONS  
  ingen annons än  
     

  » Senast online  
  Endast för inloggade  
  Antal inloggade: 1  
     

Copyright © 2007 www.ASPsidan.se
ingen sponsrar längre ASPsidan med Dedikerad Server
ASPsidan RSS
   
 XHTML / CSS
Det tog 0,0625 sekunder att ladda sidan