Syntaxe et sémantique
Au niveau des API, ASP.NET est totalement compatible avec l'ASP traditionnel, à trois exceptions près :
- Request() : ASP retourne un tableau de chaînes alors que ASP.NET retourne une chaîne.
- Request.QueryString() : ASP retourne un tableau de chaînes alors que ASP.NET retourne une chaîne.
- Request.Form() : ASP retourne un tableau de chaînes alors que ASP.NET retourne une chaîne.
Dans ASP, les collections Request, Request.QueryString et Request.Form retournent des tableaux de chaînes lors des recherches. Par exemple, dans l'ASP traditionnel, les valeurs de la chaîne de requête d'une demande lancée à http://localhost/test/Test.asp?values=45&values=600 sont accessibles de la manière suivante :
<%
' Below line outputs: "45, 600"
Response.Write Request.QueryString("values")
' Below line outputs: "45"
Response.Write Request.QueryString("values")(1)
%>
Dans ASP.NET, ces collections nécessitent une méthode explicite afin d'obtenir l'accès à des tableaux. À présent, ces tableaux sont également liés à des index de base zéro. Par exemple, dans ASP.NET, les valeurs de la chaîne de requête d'une demande lancée à http://localhost/test/Test.aspx?values=45&values=600 sont accessibles de la manière suivante :
<%
// Below line outputs: "45, 600"
Response.Write(Request. QueryString["values"]);
// Below line outputs: "45"
Response.Write(Request. QueryString.GetValues("values")[0]);
%>
<%
' Below line outputs: "45, 600"
Response.Write(Request. QueryString("values"))
' Below line outputs: "45"
Response.Write(Request. QueryString.GetValues("values")(0))
%>
<%
// Below line outputs: "45, 600"
Response.Write(Request. QueryString["values"]);
// Below line outputs: "45"
Response.Write(Request. QueryString.GetValues("values")[0]);
%>
|
|
C#
|
VB
|
JScript
|
|
Ces tableaux sont principalement utilisés lorsque des valeurs de formulaires sont publiées à partir de zones de liste à sélection multiple (<select multiple>) ou lorsque plusieurs cases à cocher portent le même nom.
Différences de sémantique entre ASP.NET et ASP
Les pages ASP.NET présentent également plusieurs différences de sémantique par rapport aux pages ASP existantes. Vous trouverez ci-dessous les problèmes les plus courants :
- Les pages ASP.NET ne prennent en charge qu'un seul langage.
ASP autorisait l'utilisation de plusieurs langages sur une page unique, ce qui était utile pour les scénarios de bibliothèques de scripts. Étant donné la nature compilée de ASP.NET, il ne prend en charge qu'un seul langage par page. Cependant, il est toujours possible de posséder plusieurs pages, chacune dans un langage distinct, au sein d'une application unique. Les contrôles utilisateur peuvent également posséder un langage différent de celui de la page qui les contient. Cela vous permet d'intégrer des fonctionnalités écrites dans différents langages sur une page unique. Il s'agit d'un substitut satisfaisant pour les fichiers Include en plusieurs langages qui prévalent dans les applications ASP traditionnelles.
- Les fonctions de la page ASP.NET doivent être déclarées dans des blocs <script runat=server>.
Dans ASP, les fonctions de la page pouvaient être déclarées dans des blocs <% %> :
<%
Sub DoSomething()
Response.Write "Hello World!"
End Sub
DoSomething
%>
Dans ASP.NET, les fonctions de la page doivent être déclarées dans des blocs <script runat=server> :
<script language="C#" runat=server>
void DoSomething() {
Response.Write("Hello World!");
}
</script>
<%
DoSomething();
%>
<script language="VB" runat=server>
Sub DoSomething()
Response.Write ("Hello World!")
End Sub
</script>
<%
DoSomething()
%>
<script language="JScript" runat=server>
function DoSomething() : void {
Response.Write("Hello World!");
}
</script>
<%
DoSomething();
%>
|
|
C#
|
VB
|
JScript
|
|
|
- ASP.NET ne prend pas en charge les fonctions de restitution de page.
Dans ASP, les fonctions de restitution de page pouvaient être déclarées avec des blocs <% %> :
<% Sub RenderSomething() %>
<font color="red"> Here is the time: <%=Now %> </font>
<% End Sub %>
<%
RenderSomething
RenderSomething
%>
Dans ASP.NET, cela doit être réécrit :
<script language="C#" runat=server>
void RenderSomething() {
Response.Write("<font color=red> ");
Response.Write("Here is the time: " + DateTime.Now);
}
</script>
<%
RenderSomething();
RenderSomething();
%>
<script language="VB" runat=server>
Sub RenderSomething()
Response.Write("<font color=red> ")
Response.Write("Here is the time: " & Now)
End Sub
</script>
<%
RenderSomething()
RenderSomething()
%>
<script language="JScript" runat=server>
function RenderSomething() : void {
Response.Write("<font color=red> ");
Response.Write("Here is the time: " + DateTime.Now);
}
</script>
<%
RenderSomething();
RenderSomething();
%>
|
|
C#
|
VB
|
JScript
|
|
|
- Au niveau des API, ASP.NET est 100 % compatible avec l'ASP traditionnel, à trois exceptions près. Au niveau des API, le changement réside dans le fait que Request(), Request.QueryString() et Request.Form() retournent à présent des chaînes isolées, plutôt que des tableaux de chaînes.
- Les pages ASP.NET ne prennent en charge qu'un seul langage.
- Les fonctions de la page ASP.NET doivent être déclarées dans des blocs <script runat=server>.
- Les fonctions de restitution de page ne sont pas prises en charge.
|