|
ASP.NET er et godt redskab til at få struktureret sine koder. <% @Page Language="C#"%> stort set asp som vi kender det. --------------------------------------------------------------------- Eks. 2 <% @Page Language="C#" %> Her har jeg koden ind i en funktion ------------------------------------------------------------------------ Eks. 3 <% @Page Language="C#" Debug="true" %> Her har jeg tilføjet eventhandleren Page_Load som indtræffer. Funkitionen SkrivStreng er ændret så den returnerer resultatet istedet for at udskrive det. For at gøre funktionen mere fleksibel og genbrugelig har jeg tilfølet nogle parametre til funktionen. Husk at når du bruger runat=server skal html-koden være wellformed. Det vil sige at div-tag'et skal afsluttes enten ved at skrive <div /> eller <div></div> I det næste eksempel vil jeg indkapsle funktionen i et objekt. ------------------------------------------------------------------------ Eks. 4 <% @Page Language="C#" Debug="true" %> Her har jeg indkapslet funktionen i et en class. Dermed er jeg forberedt til at koden kan blive puttet ind i en seperat fil. Men først vil jeg lige omskrive MyClass så at man kan sætte argumenterne som properties. ------------------------------------------------------------------------ Eks. 5 <% @Page Language="C#" Debug="true" %> Her er argumenterne lagt ind i properties som skrives meget let og elegant i C# Der er nu en skap adskillelse mellem koden og anvendelse af koden. I det næste eksempel vil jeg gøre den adskillelse endnu merer skarp ved at Lægge koden i en seperat fil. ------------------------------------------------------------------------ Eks. 6 ---------------- fil: Eksempel6.cs ---------------- using System; Der er ikke ændret noget på koden med der er tilføjet referencer til system biblioteket. using System; using System.Web.UI; System er nødvendige for de mest basale ting som f.eks håndteringe af tekst-strenge. System.Web.UI er nødvendig for at objektet kan indgå i sammenhæng med en ASP.NET applikation. "public class MyClass : Page" Her er tilføjet ":Page" hvilket betyder at MyPage aver alle egenskaber og metoder fra Klassen Page, så at de kan kaldes fra MyClass. ---------------- fil: Eksempel6.aspx ---------------- <% @Page Language="C#" Inherits="MyClass" Src="Eksempel6.cs" %> Nu er den oprindelige fil smukt renset for overflødig kode. Du vil trygt kunne overlade den til f.eks en designer. For at jeg kan bruge MyClass er der tilføjet - Inherits="MyClass" Src="Kodestruktur.cs" - i sidediriktivet. Men måske gik det alligevel galt med designeren og du kunne ønske dig en endnu bedre adskillelse af kode og layout. Det findes der råd for ved hjælp af "user controls" I det næste eksempel vil jeg opdele applikationen i tre filer. En layout fil Eksempel7.aspx En Webform fil Eksempel7.ascx Og så klassen fra Eksempel7.cs ------------------------------------------------------------------------ Eks. 7 ---------------- fil: Eksempel7.aspx ---------------- <%@Page Language="C#" %> Aspx- filen er nu fuldstændigt renset for "buisenes logic" eller kode ved hjælp af en "user control" Der laves en reference til Kontrollen med ( <%@ Register TagPrefix="Eksempel" TagName="MyControl" Src="Eksempel7.ascx" %> ) ---------------- fil: Eksempel7.ascx ---------------- <%@ Control ClassName="MyControl" Inherits="MyClass" Src="Eksempel7.cs" %> Jeg tror at teknikken med at bruge "User Controls" vil være en afløser for den måde som man ofte har brugt include-filer i Klassisk-ASP. En "User Control" Leverer HTML tekst til en aspx-fil. Side direktivet hedder nu. <%@ Control ClassName="MyControl" Inherits="MyClass" Src="Eksempel7.cs" %> Der er lavet to propeties til kontrollen. ---------------- fil: Eksempel7.cs ---------------- using System; Denne fil ligner Eksempel6.cs, men med 2 små ændringer. using System.Web.UI.WebControls; - er tilføjet Page er ændret til UserControl. Da Objektet nu skal indgå isammenhæng med en "User Control" og ikke en side. ------------------------------------------------------------------------ Eks. 8 Det sidste eksempel jeg vil vise idag er hvordan man får puttet koden ind i en dll-fil. Du ved sikkert at anvendelsen af dll-filer ikke har været særligt sjov at arbejde med i klassisk ASP, hvilket også har gjort at det ofte kun er blevet anvendet i situationer hvor man har været tvunget til det. Men lige så vanskeligt det har været, lige så let er det i ASP.NET Der er ikke længre noget med at en dll fil skal registreres. Hvis den er der, så virker den. Og kompilering kan foretages med et enkelt komando kald. f.eks. fra en bat-fil. Anvendelsen af dll-filer i ASP.NET vil være en kærkommen mulighed for mange udviklerer. Koden bliver kompileret en gang for alle, og når den er pakket ind i en dll-fil er koden skjult for uvedkommende. Man kan beskytte sine intellektuelle rettigheder og undgå at der bliver ændret i ens kode. Og endeligt performer webapplikationen bedre. ---------------- fil: compile.bat ---------------- csc /target:library /out:../bin/MyClass.dll Eksempel8.cs Kompileren csc får 3 argumenter. /target:library - Fortæller at det skal være en dll-fil /out:MyClass.dll - Fortæller hvor dll-filen skal placeres. Og sidste argument er adressen til koden. Dll-filen skal ligge i bin biblioteket <%@ Control ClassName="MyControl" %> Her er der kun lavet en lille ændring i toppen af filen i forhold til Eksembel7.ascx Istedet for at refererer til klassen med Inherits="MyClass" Src="Eksembel6.cs" er der lavet en Import med Import Namespace="bodeval.dk" ---------------- fil: Eksempel8.cs ---------------- using System; Den eneste ændring der er foretaget her er at der er tilføjet. - namespace bodeval.dk Klassisk ASP er ved at være fortid. Find tid til ASP.NET - Internettet branchen er dynamisk. Klassisk ASP har været et fint redskab, men nu skal vi videre. :-) |