doSimple MVC avec ASP.NET
MVC avec ASP.NET
Le framework ASP.NET n’incite pas particulièrement à la séparation stricte de type Modèle, Vue, Contrôleur. Il est toutefois relativement simple de la réaliser. Ce document donne un exemple concret d’une application ASP.NET MVC programmée en C#.
Dans le framework ASP.NET la vue est un fichier HTML agrémenté de balises ASP. Le contrôleur et le modèle sont en général
mélangés dans un objet qui dérive de la classe System.Web.UI.Page.
Pour obtenir une séparation strict MVC il suffit de découpler proprement le contôleur et le modèle. Le contrôleur dérivera de la classe Page :
Télécharger les fichiers de l’application.
Capture d'écran de l’application finale
Comme exemple d’application je propose une seule page qui permet de réaliser les opérations CRUD (Create, Read, Update, Delete) sur 4 tables. Cette application permet de gérer des produits, des clients, et des commandes.
La vue
L’objet ASP nommé DataGrid permet facilement de représenter une table de données
ainsi que d’indiquer les actions associées aux enregistrements de cette table. On insère ces
objets dans la page avec une syntaxe XML. Ils seront ensuite transformés
en code HTML lors de la visualisation :
<asp:datagrid id="table_clients" runat="server" AutoGenerateColumns="False"
OnEditCommand="ClientsEditHandler"
OnCancelCommand="ClientsCancelHandler"
OnUpdateCommand="ClientsUpdateHandler"
OnDeleteCommand="ClientsDeleteHandler">
<Columns>
<asp:BoundColumn DataField="pkey" HeaderText="Numéro" />
<asp:BoundColumn DataField="nom" HeaderText="Nom" />
<asp:BoundColumn DataField="prenom" HeaderText="Prénom" />
<asp:EditCommandColumn EditText="Editer" ButtonType="PushButton"
UpdateText="Valider" CancelText="Annuler" HeaderText="Actions"/>
<asp:ButtonColumn ButtonType="PushButton" Text="Supprimer"
HeaderText="Supprimer" CommandName="Delete" />
</Columns>
</asp:datagrid>
Les objets DropDownList permettent eux de présenter une liste déroulante :
<asp:DropDownList id="list_clients" runat="server" datavaluefield="pkey" datatextfield="nom" />
Télécharger le fichier de vue : index.aspx
Le modèle
L’implémentation de ce modèle utilise la base de données qui est utilisée dans l’article sur les fonctionnalités de PostgreSQL.
Le modèle travaille sur ces 4 tables de données (clients, commandes, produits, et liaison produit commande). Il fourni toutes les fonctions
CRUD (Create, Read, Update, Delete) nécessaires à la gestion et à l’affichage des ces tables. Les fonctions de lecture des données
sont utilisées afin de remplir les DataGrid et les DropDownList :
public static DataSet GetClients() public static DataSet GetProduits() public static DataSet GetCommandes() public static DataSet GetProduitCommande()
Cet exemple utilise une approche peu orientée objet. Il serait préférable, dans une implémentation plus évoluée, de créer des classes d’objets correspondantes à notre base de données.
Télécharger le fichier de gestion du modèle : ApplicationModel.cs
Le contrôleur
Ce contrôleur implémente deux fonctions héritées de la classe System.Web.UI.Page.
Il s’agit de Page_Load et Page_PreRender. Page_Load est apellé en premier lieu
puis Page_PreRender est apellé avant le rendu final de la page ASP.
Ces fonctions sont apellées dans l’ordre suivant :
Page_Load: utilisé ici pour l’ouverture de la connexion à la base de données ;- Les opérations CRUD (Create, Read, Update, Delete) sont ensuite automatiquement executées en fonction des actions de l’utilisateur ;
Page_PreRender: utilisé pour le rendu des différents objets ASP (DataGrid, DropDownList) et la fermeture de la connexion à la base de données.
Le rendu des DataGrid et des DropDownList via les DataSet est d’une grande simplicité :
DataSet ds = ApplicationModel.GetClients(); table_clients.DataSource = ds; table_clients.DataBind(); list_clients.DataSource = ds; list_clients.DataBind();
Télécharger le fichier de gestion du contrôleur : ApplicationController.cs
Utilisation de cette application avec Mono
Pour utiliser cette application vous devez compiler les fichiers
ApplicationModel.cs et ApplicationController.cs en fichiers
bibliothèques (DLL) puis les placer dans le dossier bin de votre répértoire Web :
mcs ApplicationModel.cs -r:System,System.Data,Npgsql -t:library mcs ApplicationController.cs -r:System,System.Data,System.Web,ApplicationModel -t:library
Il faut également ajouter le fichier Npgsql.dll qui permet la connexion à la base de données PostgreSQL.
Liens
- Télécharger les fichiers de l’application ;
- Article sur le pattern MVC chez Miscrosoft ;
- Implémentation MVC chez Microsoft ;
- Base de données en PostgreSQL ;
- Le fournisseur de données .NET pour PostgreSQL ;
- Le projet Mono.
- Auteur
- Batiste Bieler
- Licence
- LGPL