Instructions utilisant les balises inline <%...%> sous ASP.NET

Les balises inline, qui utilisent la syntaxe <%...%>, permettent d'exécuter du code serveur directement dans un fichier de balises (ex : dans le fichier .aspx). Elles ne peuvent pas être utilisées dans un fichier .cs.

Voyons les possibilités offertes par les versatiles balises inline :

▼Publicité

Commentaires côté serveur

Il est certainement superflu de préciser pourquoi vous devez absolument commenter vos programmes. Voici les différentes techniques qui s'offrent à vous.

Dans le code C#

Les commentaires dans le code C# sont entrés avec les symboles habituels.

Ex :

C#

// commentaire sur une ligne

C#

/* commentaire sur

 * plusieurs

 * lignes

 */

C#

/// commentaire pour documenter les méthodes

Dans le fichier de balises

Il est également possible de mettre des commentaires dans le fichier .aspx contenant les balises. On utilisera les commentaires côté serveur. Ces commentaires ne seront pas visibles sur la page Web ni dans la source sur le navigateur :

Fichier .aspx (ASP.NET)

<%-- Commentaire côté serveur --%>

On évitera les commentaires HTML. En effet, bien qu'ils n'apparaissent pas sur la page Web, on pourra les voir en consultant le code source sur le navigateur :

Fichier .aspx (ASP.NET)

<!-- Commentaire HTML -->

Directive de page

La directive de page (première ligne d'un fichier .aspx), qui utilise des balises inline, joue un rôle clé dans un programme ASP.NET. 

Ex :

Fichier .aspx (ASP.NET)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

Évaluation de code C# à l'intérieur d'une balise (liaison de données)

Lorsque vous utilisez des contrôles orientés données comme par exemple un GridView ou un ListView, il pourrait arriver que vous deviez évaluer la valeur d'un champ afin de l'afficher dans le contrôle. On dira qu'on utilise la syntaxe de liaison de données. La liaison de données utilise elle aussi des balises inline. Son rôle consiste à indiquer quel champ sera affiché à cet endroit.

Ex :

Fichier .aspx (ASP.NET)

<asp:GridView ... >

    ...

    <asp:Label runat="server" Text='<%# Eval("produit_nom") %>' />

    ...

</asp:GridView>

La syntaxe <%# ... %> permet également d'exécuter du code C# à l'intérieur d'une balise. Ceci peut s'avérer intéressant, par exemple, pour initialiser un attribut selon les résultats d'une condition. 

Dans l'exemple suivant, plusieurs techniques sont illustrées pour indiquer la valeur d'un champ booléen dans une grille. Remarquez qu'il est même possible de tenir compte des valeurs nulles lorsque nécessaire, comme démontré sur la dernière ligne.

Ex :

Fichier .aspx (ASP.NET)

<asp:GridView ... >

    ...

    <asp:Label ID="labelDisponible" runat="server" Text='<%# Convert.ToBoolean(Eval("produit_disponible")) ? "Oui" : "Non" %>' />

    ...

    <asp:CheckBox ID="checkBoxDisponible" runat="server" Checked='<%# Eval("produit_disponible").ToString().Equals("True") %>' />

    ...

    <asp:Image ID="imageDisponible" ImageUrl="Medias/Commun/Crochet.png" runat="server" 

        Visible='<%# Eval("produit_disponible") != DBNull.Value ? Convert.ToBoolean(Eval("produit_disponible")) : false %>' />

    ...

</asp:GridView>

Autre utilisation intéressante de la syntaxe <%# ... %> : appeler une fonction serveur pour initialiser une information dans le fichier de balises.

Ex :

Fichier .aspx (ASP.NET)

<asp:Label ID="labelMeilleurVendeur" runat="server" Text='<%# FonctionsCommunes.MeilleurVendeur() + " (à ce jour)" %>' />

Configurations lues dans Web.config

La lecture de configurations tirées du fichier Web.config est une autre instruction utilisant les balises inline. 

Ex : pour retrouver la chaîne de connexion configurée dans Web.config :

Fichier .aspx (ASP.NET)

<asp:SqlDataSource ID="dataSourceProduit" runat="server" 

    ConnectionString="<%$ ConnectionStrings:ConnectionStringVotreSite %>" ... >

</asp:SqlDataSource>

Il est également possible de créer nos propres éléments de configuration et de les utiliser dans notre code :

Fichier Web.config (XML)

<configuration>

  <appSettings>

    <add key="developpement" value="true"/>

    ...

  </appSettings>

  ...

</configuration>

Et pour utiliser cette configuration : 

Fichier .aspx (ASP.NET)

<div id="divModeDeveloppement" runat="server" class="modedeveloppement">

    <asp:Label Text="Mode développement : " runat="server" />

    <asp:Label Text='<%$ AppSettings:developpement %>' runat="server" />

</div>

On pourra également utiliser la configuration dans le code C# : 

Fichier .aspx.cs (ASP.NET avec C#)

String developpement = ConfigurationManager.AppSettings["developpement"];

if (developpement != "true")

{

    divModeDeveloppement.Visible = false;

}

Affichage direct d'une expression 

Il est également possible d'afficher directement une expression en l'entourant de <%= ... %> dans le fichier .aspx. On obtiendrait le même résultat avec Response.Write("..."); dans le fichier .aspx.cs. Cette technique est cependant à proscrire puisque ASP.NET met à notre disposition des outils plus sophistiqués permettant d’écrire du code plus « propre », plus puissant et plus facile à maintenir.

Ex :

Fichier .aspx (ASP.NET)

<%= DateTime.Now.ToString() %>

Cependant, l'affichage direct d'une expression est pratique dans un fichier script, notamment pour retrouver l'identifiant coté client d'un contrôle serveur.

Ceci sera possible seulement si le script est inclus directement dans le fichier .aspx et non dans un fichier .js.

Ex :

Fichier .aspx (ASP.NET)

<script>

   $(function() {

      var textBoxNom = document.getElementById('<%= textBoxNom.ClientID %>');

      ...

   });

</script>

Blocs de code incorporé

Tout comme en PHP, il est possible d’imbriquer du code exécutable au travers du code HTML. Comme expliqué plus haut, on évitera cette technique car on lui préférera les outils sophistiqués d'ASP.NET

Ex :

Fichier .aspx (ASP.NET)

<form runat="server">

    ...

    <% Response.Write("<p>" + maVariable.ToString() + "</p>") %>

    ...

</form>

Pour plus d'information

VINCENT Lainé. « Bien commenter et documenter son code en C# ». Developpez.com. http://vincentlaine.developpez.com/tuto/dotnet/comdoc/

« Introduction aux expressions inline ASP.NET dans le .NET Framework ». Support Microsoft. http://support.microsoft.com/kb/976112

« Embedded Code and Inline Server Tags ». Ahmed Moosa. http://weblogs.asp.net/ahmedmoosa/archive/2010/10/06/embedded-code-and-inline-server-tags.aspx

« Syntaxe d'expression de liaison de données ». MSDN. http://msdn.microsoft.com/fr-fr/library/bda9bbfx(v=vs.100).aspx

« Blocs de rendu de code ». MSDN. http://msdn.microsoft.com/fr-fr/library/k6xeyd4z(v=vs.100).aspx

« Syntaxe des directives de modèles de texte ». MSDN. http://msdn.microsoft.com/fr-fr/library/xz702w3e(v=vs.100).aspx

« Introduction aux expressions inline ASP.NET dans le.NET Framework ». Microsoft. http://support.microsoft.com/kb/976112/fr

« Embedded Code and Inline Server Tags ». Ahmed Moosa. http://weblogs.asp.net/ahmedmoosa/embedded-code-and-inline-server-tags

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories