Konverter fra ASP til ASP.NET
Da ASP normalt er programmeret i VBScript, er det mest oplagte at rette dette til VB (Visual Basic) i ASP.NET, da de to sprog ligger meget tæt på hinanden, og det er det vi på denne side går ud fra.
Største ændringer fra VBScript til VB
- Alle variable skal deklareres og helst types
- Option Explicit er slået til som standard, og da der ikke findes "variants" i ASP.NET, bliver en uspecificeret variabel sat til et "object". Det anbefales endvidere at man sætter Option Strict, hvilket vil kræve at alle dine variable bliver sat til en type (string, integer).
- Alle metoder kræver paranteser
- Du kan ikke længere skrive
Response.Write "Hello .NET!". Du skal skriveResponse.Write("Hello .NET!"). - Nogle af de "underlige" kald er ændret
While [condition] [statements] Wendhedder nuWhile [condition] [statements] End While
Hvis du i stedet for While/Wend brugerDo [{while | Until} condition] [statements] Loopvil du kunne bruge samme kode begge steder.
Skal en linje fylde flere linjer, skal man skrive& _eller( _, man kan ikke bruge&_og(_.
EnCasesætning kan ikke stå på en linje, efter for eksempelCase 10, skal der være linjeskift.
IsObject eksisterer ikke, i ASP.NET er alt et objekt, du kan i stedet bruge IsReference.- Ikke flere forkortede "default properties"
- Normalt kunne man skyde genvej og skrive
RS("Name")du skal nu angive hvilken type du ønsker (normalt selve dataene)RS("Name").Value - Instruktionerne Set og Let er nu unødvendige da alting er objekter.
- For at bruge en class eller et objekt, skal man nu skrive
Pay = New clsPayModulei stedet forSet Pay = New clsPayModule. - ByVal er nu standard
- ByRef som standard i funktionskald er udskiftet til ByVal som standard. Dette betyder at kald til funktioner/procedurer der retter i en af variablene i kaldet, ikke længere sender de rettede variabler retur med mindre man sætter ByRef i funktionen/proceduren.
- "Include-filer" skal hentes via script
- Include bruges ikke længere, man skal i stedet bruge
<script language="vb" runat="server" src="filnavn.cls"></script>. Man kan ikke længere have kode eller variable stående "udenfor" funktioner eller subs, man kan med fordel i stedet lave en class. - En Class kan ikke umiddelbart tilgå serverobjekter
- For at lave Response.Write, trække fra en Application("variabel") værdi og lignende, skal man nu lave inherit eller bruge andre metoder. Se vores class konvertering support.
Du kan sagtens nøjes med at omkode nogle af dine sider til ASP.NET, men du skal være opmærksom på at Application og Session variable der sættes i ASP og ASP.NET ikke er de samme, så de kan ikke deles henover siderne. Har man brug for det kan man for eksempel gemme dataene i en database.
Mens du omkoder kan det være en god ide at sætte <compilation debug="true"/>
i din "web.config" fil, så du kan se fejlbeskeder, det anbefales kraftigt at du fjerner
"debug mode" igen bagefter.
Et typisk problem man oplever, er at man skal konvertere sine data fra streng til tal hvis man bruger Option Strict, det gøres således:
' Konverter en tekststreng til et tal i VB Dim strNumber as String = "12345" Dim intNumber as Integer = Int32.Parse(strNumber)
Microsoft har lavet en udvidet migration guide, der forklarer yderligere og mere avancerede ting man eventuelt vil løbe ind i.
Eksempler
Samtidig brug af samme "includefil" i ASP og ASP.NET
Følgende eksempel viser hvordan du kan omkode en "includefil", så den virker både hvis den bliver brugt fra ASP og ASP.NET. Du kan sagtens lave kode der samtidig er kompatibel både med VB.NET (Visual Basic) og VBScript (ASP).
Typisk kode i ASP
"Includefil"
<%
Sub Hello
Response.Write "Hello World!<br/>"
End Sub
Sub HelloYou(strText, strTarget)
Response.Write "Hello " & strTarget &_
" - from " & strText & "<br/>"
End Sub
%>
<!--#include file="diverse-asp-behind.inc"--> <html> <body> <% Hello HelloYou "ASP", "World" %> </body> </html>
Eksempel der virker både i ASP og ASP.NET
"Includefil"
Sub Hello()
Response.Write("Hello World!<br/>")
End Sub
Sub HelloYou(strText,strTarget)
Response.Write("Hello " & strTarget & _
" - from " & strText & "<br/>")
End Sub
<script language="vbscript" runat="server" src="diverse-asp-net-behind.inc"></script>
<html>
<body>
<%
Call Hello()
Call HelloYou("ASP", "World")
%>
</body>
</html>
<script language="vb" runat="server" src="diverse-asp-net-behind.inc"></script>
<html>
<body>
<%
Hello()
HelloYou("ASP.NET","World")
%>
</body>
</html>
