490 likes | 636 Views
ASP.NET. User Controls. Som SSI i html Extension .ascx Inga html eller body taggar Inkluderas i aspx-sidor Kan innehålla webserverkontroller och hantera data mellan aspx och ascx-sidorna. User Controls – bra till:. Sidhuvud/sidfot Navigeringsmenyer …. User Controls – sidfot.aspx:. <tr>
E N D
User Controls • Som SSI i html • Extension .ascx • Inga html eller body taggar • Inkluderas i aspx-sidor • Kan innehålla webserverkontroller och hantera data mellan aspx och ascx-sidorna
User Controls – bra till: • Sidhuvud/sidfot • Navigeringsmenyer • …
User Controls – sidfot.aspx: <tr> <td > Tillämpad fysik och …<br> Databasteknik och Web, 5p </td> <td> <img … > </td> </tr>
UC använd sidfot.ascx: Längst upp på sidan: <%@ Register Tagprefix="di" TagName="fot" src="sidfot.ascx" %> Man registrerar komponenten, med prefix, namn och källfil
UC använd sidfot.ascx: I aspx-koden: <table> <di:head runat=”server”/> … <di:fot runat="server" /> </table>
UC vidare lyx: • Baka in webserverkontroller • Publika egenskaper i scriptdelen – Set/Get-kommandon • Dessa återkommer i kontrollens asp.net-kod i ascx-filen • Och i aspx-filen som vanliga egenskaper typ: <di:header backcolor=”beige”>
Custom Controls • Är egentligen en VB-klass eller C#… • Kompileras och lägges i assembly cache • Har som UC egenskaper och tillstånd • Bra övning för att programmera VB.Net eller C#.Net och blanda med Asp.Net • Se tutorial: Custom Control där även ViStudio.Net är med på ett hörn
Server-Side Include (SSI) • Inkluderad fil • Återanvända kod • Tex sidhuvud/sidfot • Överblick • Lätt att redigera kod
Inkludera fil • Fysiska sökvägen • <!--#include file=”filnamn”--> • Virtuell sökväg • <!--#include virtual=”filnamn”-->
Exempel SSI • Huvud.aspx <img src="hej.bmp" alt="bild från inkluderad fil"><br> Detta är skrivet i en inkluderadfil <a href="http://www.tfe.umu.se">en fin fin länk</a><p> • Index.aspx <script language="VB" runat="server"> sub Page_Load(obj as object, e as eventargs) 'gör något end sub </script> <html><body> <!--#include virtual="huvud/huvud.aspx"--> Hej hopp nu då </body></html>
Code Behind • Ett av sätten att skilja UI från logik, t.ex. html-kod från VB-kod • Stöds av ViStudio.net - man lämnar scriptblockstekniken (code render block) • Hanteras som objekt
Inte Code Behind En .aspx-sida: Scriptblock Html-kod
Code Behind VB eller C#-kod .vb eller c#-sida: .aspx-sida: HTML och ASP.NET Koden kompileras precis som för ”vanlig” inbäddad kod. Det blir alltså ingen prestandahöjning med Code Behind!
Code Behind i ViStudio.net 1. Skriv aspx-koden, eller lägg ut objekten via toolboxen. 2. Klicka på knappar, sidan m.m. för att komma åt bakomliggande koden. Man kan också växla till den med ”Solution Explorer”. Ställ den i läget ”View all files” 3. Kör ”Build” för att kompilera koden. 4. Gå till aspx-sidan (läge html) och klicka på ”View i browser”-knappen.
Code Behind - i ViStudio.net 5. Alternativt, välj aktuella aspx-filen välj ”Set as start page”. 6. Tryck F5.
Code Behind – detaljer aspx: <%@ Page Language="vb" AutoEventWireup="false" Codebehind=”Ex2.aspx.vb" Inherits=”Demo3.Ex2"%>
Detaljer i aspx.vb: Imports System.Data Public Class Ex3: Inherits System.Web.UI.Page Protected WithEvents Label1… Private Sub Page_Load(By…
Byggblocken i .NET • .NET Framework • .NET Enterprise Servers • .NET Building Block Service • Visual Studio.Net
.NET Framework C# VB C++ Jscript … Common Language Specification, CLS Visual Studio.Net ASP.NET WindowsForms ADO.NET XML Base Class Library CLR – Common Language Runtime Windows COM+ Service
Vad händer med koden? MSIL med Metadata Källkod Kompi- lator MSIL = Microsoft Intermediate Language
Vad händer med koden? Metadata Färdigt Program CLR CLR = Common Language Runtime
Om Klasser • Allt behandlas som objekt • Objekten placeras i logiska grupper – Klassbibliotek – här ”Namespaces” (som Java Package)
Vad kan man bygga? • Windows applications – Forms • Windows Forms Control • Windows Service Applications – NT Service • ASP.NET Applications • Web Service
”MS-skryt” om .NET • Enklare att utveckla applikationer • Stort utbud av klasser • Plattform för XML och WebService • Flera språk i samma miljö • Arbetar tillsammans med COM • Robust, säker driftsmiljö • The End of ”DLL Hell”
Övriga filer i ett ASP.NET projekt • Global.asax • Web.config • /bin-katalogen – assembly cache • Styles.css • Assemblyinfo.vb
Global.asax Körs först av alla filer i ett projekt. T.ex finns det följande händelser: • Application_BeginRequest • Application_AuthenticationRequsest • Application_Error Fler tillämpbara rutiner finns att använda.
Global.asax • Skapa applikation av flera .aspx sidor • Virtuell katalog en applikation • HttpApplication • Objektet som styr ASP.NET-Applikationen • Global.asax skall ligga i rotmappen • Standardiserade namn • Application_Start(obj as abject, e as eventargs)
Web.config • Konfigurerar din webbapplikation. • Ska ligga en i rotkatalogen eller en enklare i underkataloger. (Hierarkisk) • Har olika konfigurationsavsnitt. • Format – XML • Taggar skrivs med ”camelNotation”
Web.config uppbyggnad <configuration> <configSection> Hanterare infogas här </configSection> <system.web> ASP.NET inställningar infogas här </system.web> <system.net> Köregenskaper för .NET infogas här </system.net> </configuration>
Rotkatalog Under katalog Under under-katalog Web.config • Hierarkiskt konfigurationssystem
Web.config -konfigaurationsavsnitt <appSettings><add key=”Namn” Value=”Något..”/> </appSettings> Här kan man lägga textsträngar, t.ex. drivrutiner och sökväg till databas
Web.config -konfigaurationsavsnitt <customErrors defaultRedirect=”x.htm”><error statuscode=”404” redirect=”404fel.htm”> </customErrors>
Web.config -konfigaurationsavsnitt <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <authorization> <!-- Allow Authenticated users --> <deny users="?" /> </authorization> </system.web> </configuration>
.Net -säkerhet Olika steg: • Autentisering • Auktorisering • Pesonifiering
FormulärAutentisering Olika sätt: • Windows, IIS:ens inställningar • Forms, normala för publika sidor • Passport, ?? • None, default
Hur kolla lösenord? Olika sätt: • Lösenord i web.config, kryptering möjlig • Lösenord i kod :) • Lösenord i databas • Lösenord i en xml-fil
Web.config – Vad händer sedan? Normalt sätts en ”Authentication ticket Cookie” som läggs på användarens dator. Den har ett id och man kan välja persistens. (kom ihåg mitt lösenord = persistant = kakan tas inte bort)
\bin - assemblycachen • Samlingscache på svenska • Katalog som innehåller kompilerade filer • Man kan hitta sina klasser genom ”view classes” i ViStudio.net
Styles,css • Stilblad som anger fonter färger m.m.
Assemblyinfo.vb • Innehåller information för den som jobbar med sidorna, versioner, titel, företag, produktnamn o.s.v.
Sessions / Cookies • Session är en variabel som ligger i en container på servern. • Cookie en variabel som ligger på klientdatorns hårddisk. • CookieMunging – för surfare som inte accepterar cookies. Kakan följer med i http-requsten.
Cookies • Lagrar information på användarens HD • Tex. Användarnamn m.m • Request/Response
Skapa en Cookie • Enkel Cookie [VB] Respons.Cookies(”namn”).Value = ”ett värde” [C#] Respons.Cookies[namn].Value = ”ett värde” • Nyckel/värdepar Respons.Cookies(”Multikaka”)(”Namn”) = ”Styrbjörn” Respons.Cookies(”Multikaka”)(”Efternamn”) = ”Järnkvist” [C#] Respons.Cookies[Kaknamn][Nyckelnamn]
Hämta cookie. Expires • Enkel Cookie Namn = Request.Cookies(”namn”).value • Nyckel/värdepar Namn = Request.Cookies(”Multikaka”)(”namn”) Efternamn = Request.Cookies(”Multikaka”)(”Efternamn”) • Expires Response.Cookies(”Multikaka”).Expires = NewDateTime(2002,03,01) Eller Response.Cookies(“Multikaka”).Expires = DateTime.Now.AddMonth(1)
Ex. Använda Cookies <%@ Page Language="VB" %> <script runat="server"> sub Page_Load(obj as object, e as eventargs) dim strVariabel as string Response.Cookies("Multikaka")("Förnamn") = "Stig" Response.Cookies("Multikaka")("Efternamn") = "Järnkvist" Response.Cookies("Multikaka")("Ålder") = "56år" for each strVariabel in Response.Cookies("Multikaka").Values Label1.Text += "<b>" & strVariabel & "</b>: " & _ Request.Cookies("Multikaka")(strVariabel) & "<br>" next end sub </script> <html><body> <form runat="server"> <asp:Label id="Label1" runat="server"/> </form> </body></html>
Session • Lagrar information om användare på servern • Tex variabler, objekt, strängar • Syntax för session Session.Add(variabelnamn, värde) Eller Session(variabelnamn) = värde
Kontrollera Session • Timeout Session.Timeout = x ’x är tiden i minuter • Session.Abandon