28. november 2004 - 11:38Der er
14 kommentarer og 2 løsninger
Aflæsning af querystring via kode
Jeg har en webside som består af en HTML tabel. I venstre celle har jeg en række links, der sætter en querystring ID (Default.aspx?ID=2) afhængig af, hvad der skal vises i højre celle. I højre celle har jeg indlagt en includefil og denne havde jeg tiltænkt skulle vise celleindhold afhængigt af, hvad der var klikket i venstre celle, men hvordan aflæser jeg ID nummeret via kode i includefilen? Denne metode virker fint i almindelig ASP, men er det også den rigtige metode i ASP.NET? Den synes at ville indsætte programsprogsoplysning selv i includefilen, men det må jo ikke forekomme to gange.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
i stedet for at have f.eks. 5 forskellige includes ligger du alt i en fil (eller evt. en usercontrol / class fil) hvor du så vælger efter querystringen hvad du vil vise..
det tager lidt længere tid at loade siden første gang men, forskellen på asp.net og alm. asp er at asp.net "husker" hvad der kompiles (maskinkode), og alm. asp kompiler dit script hver gang
Min tanke var ikke at have mange includefiler, men blot en enkelt som du nævner, men spørgsmålet er stadig, hvordan man i denne fil aflæser querystringen?
Web Matrix bliver ved med selv at indsætte <%@ Page Language="VB" %> i includefilen, som så fejler - ved du, hvorfor den går det af sig selv?
Man kan ikke include en aspx på aspx side.. Det skal være en plain tekstfil eller en usercontrol, hvor en usercontrol er mest normalt. Hvis det er alm. tekst og ikke har kode med sig, kan det godt betale sig at include en tekst-fil.
vb - codebehind (usercontrol) : Public Sub Page_Load Dim query As String query = cStr(Request.QueryString("page")) Select Case (query) Case "Nyheder": content.controls.add(LoadControl("pages/nyheder.ascx")) End Case End Sub
vb - codebehind (include) : Public Sub Page_Load Dim filepath As String = Server.Mappath("pages/ting.inc") Dim sR As IO.StreamReader sR = IO.File.OpenText(filepath) Dim theText As String = sR.ReadToEnd() Dim html As New Literal html.Text = theText myPlaceHolder.controls.add(html) sR.Close() End Sub
Dette kan man, så vidt jeg kan se (codebehind), ikke lave i Web Matrix, men kan man bruge userconrol i Web Matrix? Undskyld hvis det er et banalt spørgsmål, men jeg er absolut på indlæringskurven til ASP.NET.
Sub Page_Load() Dim filepath As String = Server.Mappath("pages/ting.inc") Dim sR As IO.StreamReader sR = IO.File.OpenText(filepath) Dim theText As String = sR.ReadToEnd() Dim html As New Literal html.Text = theText myPlaceHolder.controls.add(html) sR.Close() End Sub
Sub Page_Load() Dim query As String query = cStr(Request.QueryString("page")) Select Case (query) Case "Nyheder": content.controls.add(LoadControl("pages/nyheder.ascx")) End Case End Sub
Mange tak for udførlige svar - jeg vil afprøve! Hvordan laver man mest hensigtsmæssigt, at klik på et link i venstre side, viser det rigtige indhold i placeholderen i højre side? Eksempelvis:
Sub Page_Load() Dim query As String query = cStr(Request.QueryString("page")) Select Case (query) Case "VisKunder": rightSide.controls.add(LoadControl("pages/visKunder.ascx")) Case "VisBetalinger": rightSide.controls.add(LoadControl("pages/visBetalinger.ascx")) End Case End Sub
Hold da k.....!!! Det virker perfekt - du har jo bragt mig 'lysår' fremad!! Kan man så bare bygge forms op med kontroller, databasekald og andet godt i .ascx-filerne?
Ja de virker lige som .aspx filer udover at deres topdirektiv hedder <%@ Control Language="VB" %> og at de naturligvis ikke skal have al html kode, altså kun der skal til for at det kontrollen skal bruges til.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.