Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Ordning och reda i webbprojektet

Postad 2005-01-15 av Emil Löfquist i sektionen ASP.NET, C#, Okategoriserat med 1 Kommentarer | Läst av: 3699, Betyg: 70%

Förord

I denna artikel (min första här på Pellesoft och min första överhuvudtaget) tänkte jag gå igenom användningen av templatesidor samt filstrukturering i projekt och varför det är så viktiga när sajten börjar växa. Hämta hem exempelprojektet: WebTemplates.zip
Innehåll
  » Liten bakgrundshistoria
  » Ett varningens ord
  » Mål
  » Modellen
  » Funderingar
Relaterade artiklar


Liten bakgrundshistoria

Vid slutet av sommaren 2004 bestämde jag mig för att lära mig c# och asp.net. Jag hade tidigare läst kurser i de båda ämnena men svårighetsgraden låg långt bortom mina tidigare kunskaper. Jag klarade inte kurserna med mer än en hårsmån vilket gjorde mig beslutsam att ta igen det jag inte klarade av på egen hand i ett makligare tempo.
Jag satte genast igång med diverse projekt men många snabbt blev liggande pga av bristande kunskaper. Jag kom till en punkt där jag kände att jag inte kunde ta projektet vidare främst av den anledning att filerna låg utspridda lite här och var och det var väldigt jobbigt att hitta en fil och göra en förändring. Jag kom fram till att det måste finnas en bra modell för hur man bygger och uppdaterar projekt samt minimerar antalet sidor som måste kompileras. Efter veckor av letande och testande av olika modeller bestämde jag mig slutligen att skapa mig en egen. Detta visade sig vara lättare än vad jag tidigare trott.


Ett varningens ord

Jag är ingen skicklig programmerare. Kom gärna med feedback på hur koden/modellen kan utvecklas/snyggas till.


Mål

Mitt mål med det hela var dels att kunna bygga sajter som i princip kan växa i all oändlighet med ”oändliga” nivåer men som samtidigt är lättnavigerade. Något jag själv alltid vill veta när jag surfar runt på en sajt är att se var jag är, hur jag kom dit och hur jag lätt kan ta mig fram och tillbaka utan att tappa bort mig. Nästa grej var att sajten skulle vara lätt att uppdatera och det skulle gå snabbt att hitta bland filerna. Jag har tidigare jobbat på ett stort webbaserat företag där filerna till sajten låg utspridda på servrar över halva europa. Logiken bakom var lika med null och enda möjligheten att hitta det man ville var att memorera sökvägarna. Detta var både frustrerande och tidskrävande och jag ville komma bort från allt detta med min modell.


Modellen

Jag hade nu följande utgångspunkter:

• En enda aspx-sida som grund.
• I aspx-sidan ville jag sedan kunna ladda in antingen html-sidor eller ascx-kontroller.
• Ett generiskt utseende.
• Jag ville helst inte kompilera om sajten om jag absolut inte var tvungen.
• Det skulle vara lätt att göra förändringar, alltså en strikt logisk filstruktur med logiska namn som det är lätt att hitta i.

Jag valde att försöka styra så mycket det bara gick i Global.asax. Där plockar jag bland annat in och bearbetar querystringen, laddar in dynamisk meta-information från textfiler.
Länkarna valde jag att bygga upp enligt följande princip:

index.aspx?page=Huvudsida,UnderSida1,UnderSida2 osv.

I detta fall pekar strängen på en fil som ligger i mappen ./Sidor/Huvudsida/UnderSida1/UnderSida2/UnderSida2.ascx alt. UnderSida2.html.
Varje sida har alltså sin egen mapp i applikationen. Mappens namn måste vara exakt detsamma som den fil den innehåller.
Varje mapp har även en fil som heter meta.txt och som innehåller det vanliga, title, keywords och description och ser ut så här:

Min title|Mina keywords|Beksrivningen


För att ombearbeta url:en anropar jag en funktion i sektionen Application_BeginRequest(). Jag separerar varje del page= och laddar in de i en array. Därefter bygger jag upp en sökväg som pekar på en fil i applikationen och inkluderar antingen en ascx-kontroll eller streamar in en html-fil.

Exempel (ladda hem exempelprojektet för att se hela koden)

private static string finishedFilePath;
protected void Application_BeginRequest(Object sender, EventArgs e)
{
finishedFilePath = "";
string queryPath = Request.Querystring["page"];
char[] splitter = {','};
string[] arrPaths = queryPath.Split(splitter);
string pathToReturn = "";
foreach(string path in arrPaths)
{
pathToReturn += path + "/";
}
finishedFilePath = pathToReturn + arrPaths[arrPaths.GetUpperBound(0)];
}

public static string FinishedFilePath
{
get
{
return finishedFilePath;
}
set
{
finishedFilePath = value;
}
}


I filen index.aspx.cs avgör jag sedan vad som ska visas i index.aspx.

Exempel:

override protected void OnInit(EventArgs e)
{
if(Request.QueryString["page"] == null)
{
//Jag använder en vanlig label och väljer här vad den ska innehålla
LabelPageControl.Controls.Add(Page.LoadControl("./Sidor/Huvudsida/Huvudsida.ascx"));
}
else
{
try
{
LabelPageControl.Controls.Add(Page.LoadControl("./Sidor/" + Global.FinishedFilePath + ".ascx"));
}
catch(Exception err)
{
try
{
LabelPageControl.Text = "";
StreamReader sr = new StreamReader(Server.MapPath("./Sidor/" + Global.FinishedFilePath +
".html"),Encoding.Default);
LabelPageControl.Text = sr.ReadToEnd();
sr.Close();
}
catch(Exception fileErr)
{
LabelPageControl.Text = "Leverera felmeddelande";
}
}
}
}


På samma sätt som jag bygger upp en sökväg till filen i filsystemet skapar jag även en visuell ”klickbar” sökväg som användaren kan använda för att navigera på sajten och som visar vilken väg användaren har gått. Ex. > Huvudsida > UnderSida1 > UnderSida2.
Den koden har jag utelämnat här men finns att se i exempelprojektet.

Jag har byggt en sida enligt modellen och hitills har det fungerat väldigt bra och responsen har varit god den med.
Det avslutar ungefär det jag ville visa. Kontakta gärna mig med frågor och tips.


Funderingar

Den nackdel som jag ser med att skapa querysträngar och sökvägar på detta sätt att att queryn inte blir särksilt läsbar eftersom jag använder samma information för att skapa den visuella sökvägen som till filsökvägen. Ytterligare en nackdel är att url:erna blir långa och svåra att skriva. Det är inte helt omöjligt att jag kommer med en uppdatering kring detta framöver.
Upp

1 Kommentarer


  1. Simon Dahlbacka
    16 jan 2005

    Ämnet är relevant, dock funderar jag varför du inte använt PathInfo direkt, utan byggt en egen med i princip samma funktionalitet. Kolla t.ex. in

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
1 174
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies