
Modèle de page code-behind
Le modèle de page code-behind vous permet de conserver le balisage dans un fichier (le fichier .aspx) et le code de programmation dans un autre. Le nom du fichier de code varie en fonction du langage de programmation utilisé.
Remarque : |
|---|
Tous les langages de programmation .NET ne permettent pas de créer des fichiers code-behind pour les pages Web ASP.NET. Les langages doivent prendre en charge des classes partielles. Par exemple, le J#, qui ne prend pas en charge les classes partielles, ne permet pas de créer des fichiers code-behind pour les pages ASP.NET. |
Par exemple, si vous utilisez une page nommée SamplePage, le balisage se trouvera dans le fichier SamplePage.aspx et le code dans un fichier nommé SamplePage.aspx.vb (en Visual Basic), SamplePage.aspx.cs (en C#), etc.
Remarque : |
|---|
Le modèle code-behind utilisé dans le .NET Framework version 2.0 est différent de celui qui est utilisé dans les versions précédentes. |
Dans le modèle code-behind, l'exemple utilisé dans la section précédente pour la page à fichier unique se présentera en deux parties. Le balisage se trouvera dans un des fichiers (dans cet exemple, SamplePage.aspx) et ressemblera à la page à fichier unique, comme dans l'exemple de code suivant.
<%@ Page Language="VB" CodeFile="SamplePage.aspx.vb"
Inherits="SamplePage" AutoEventWire="false" %>
<html>
<head runat="server" >
<title>Code-Behind Page Model</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label id="Label1"
runat="server" Text="Label" >
</asp:Label>
<br />
<asp:Button id="Button1"
runat="server"
onclick="Button1_Click"
Text="Button" >
</asp:Button>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" CodeFile="SamplePage.aspx.cs"
Inherits="SamplePage" AutoEventWireup="true" %>
<html>
<head runat="server" >
<title>Code-Behind Page Model</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label id="Label1"
runat="server" Text="Label" >
</asp:Label>
<br />
<asp:Button id="Button1"
runat="server"
onclick="Button1_Click"
Text="Button" >
</asp:Button>
</div>
</form>
</body>
</html>
Dans la page .aspx, le modèle à fichier unique et le modèle code-behind présentent deux différences. Dans le modèle code-behind, aucun bloc de script n'a d'attribut runat="server". (La page peut contenir des blocs de script sans l'attribut runat="server" si vous souhaitez écrire un script côté client dans la page.) La deuxième différence est que la directive @ Page du modèle de code-behind contient des attributs qui référencent un fichier externe (SamplePage.aspx.vb ou SamplePage.aspx.cs), ainsi qu'une classe. Ces attributs lient la page .aspx à son code.
Le code se trouve dans un fichier distinct. L'exemple de code suivant montre un fichier code-behind qui contient le même gestionnaire d'événements Click que l'exemple de la page à fichier unique.
Partial Class SamplePage
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = "Clicked at " & DateTime.Now.ToString()
End Sub
End Class
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class SamplePage : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "Clicked at " + DateTime.Now.ToString();
}
}
Le fichier code-behind contient les déclarations de classe complètes dans l'espace de noms par défaut. Toutefois, la classe est déclarée avec le mot clé partial qui indique qu'elle n'est pas contenue tout entière dans un fichier. Au lieu de cela, lorsque la page s'exécute, le compilateur lit la page .aspx et le fichier qu'il référence dans la directive @ Page, les assemble en une seule classe, puis les compile en une seule unité dans une classe unique.
Le fichier de classe partielle hérite de la classe Page de la page. Pour plus d'informations, consultez Vue d'ensemble de la classe de page ASP.NET.