You are on page 1of 15

Plan

1. Dveloppement
ASP.NET ASP.NET MVC
2. Contrles
2.1 Contrles lmentaires
2.2 Prsentation de donnes
2.3 Programmation de contrles
Lionel Seinturier
3. MVC
Universit de Lille 1

Lionel.Seinturier@univ-lille1.fr

19/1/15

ASP.NET 1 Lionel Seinturier ASP.NET 2 Lionel Seinturier

ASP.NET ASP.NET
Active Server Pages (ASP) ASP vs ASP.NET
du code Java embarqu dans une page HTML volution des ASP pour prendre en compte .NET
mmes principes JSP, PHP extension .asp (.aspx pour ASP.NET)
ASP : VBScript ou JScript ASP.NET : VB, C#, langages .NET
les fichiers .aspx sont stocks sur le serveur (comme des docs)
ASP: interprt/non typ ASP.NET : compil/typ
ils sont dsigns par une URL http://www.lifl.fr/prog.aspx
le chargement de l'URL provoque l'excution de l'ASP ct serveur
ASP.NET vs JSP
1 2 modle de programmation similaire
Client Serveur prog.aspx
++ ASP.NET = composants graphiques (contrles)

4 3
IE ASP.NET vs servlet
Firefox CLR .NET
... pas d'quivalent de l'API servlet dans le monde ASP.NET
en interne, les ASP.NET sont traduites en classes et compiles

ASP.NET 3 Lionel Seinturier ASP.NET 4 Lionel Seinturier


1. Dveloppement 1. Dveloppement
Illustration du fonctionnement Principe de fonctionnement
<%@ Page Language="c#" %> <%@ Page Language="c#" %>
<HTML> <BODY> <HTML> <BODY>
<H1>Table des factorielles</H1> <H1>Table des factorielles</H1>
<% <% du code C#
int i,fact; int i,fact;
for ( i=1,fact=1 ; i<4 ; i++, fact*=i ) { for ( i=1,fact=1 ; i<4 ; i++, fact*=i ) {
Response.Write( i + "! =" + fact + "<BR>" ); rsultat = HTML
} Response.Write( i + "! =" + fact + "<BR>" ); gnr via l'objet
%> }
prdfini Response
</BODY> </HTML> %>
</BODY> </HTML>

invocation
! ce qui est <HTML> <BODY>
excution renvoy <H1>Table des factorielles</H1>
1! = 1<BR>
ct serveur au client 2! = 2<BR>
3! = 6<BR>
</BODY> </HTML>

ASP.NET 5 Lionel Seinturier ASP.NET 6 Lionel Seinturier

1. Dveloppement 1. Dveloppement
Principe de fonctionnement Principe de fonctionnement
plusieurs zones <% ... %> possibles dans une mme ASP.NET
excutes dans leur ordre de dfinition

une classe gnre pour chaque ASP.NET


ne change pas tant que le fichier .aspx n'est pas modifi
instancie pour traiter une requte

pas de persistence de l'instance (objet) entre 2 invocations


besoin : conserver de l'information
" dclarer des attributs static

ASP.NET 7 Lionel Seinturier ASP.NET 8 Lionel Seinturier


1. Dveloppement 1. Dveloppement
Mthodes et variables d'instance Exemple
Entre les balises <script runat="server"> et </script>

1re invocation
<%@ Page Language="c#" %>
<HTML> <BODY>
<H1>Compteur</H1>
<script runat="server">

static int compteur = 0;

int GetCompteur() {
return compteur++;
}

</script> 2me invocation

<H1> <% Response.Write(GetCpt()); %> </H1>

</BODY> </HTML>

ASP.NET 9 Lionel Seinturier ASP.NET 10 Lionel Seinturier

1. Dveloppement 1. Dveloppement
Balise <script> Les objets implicites
Le code peut tre dfini dans un fichier externe Objets prdclars utilisables dans le code

<%@ Page Language="c#" %> Request la requte qui a provoqu le chargement


<HTML> <BODY> Response la rponse la requte de chargement
<H1>Compteur</H1>

<script runat="server" src="url" /> Session suivi de session pour un mme client
Session.Add( string name, object value )
<H1> <% Response.Write(GetCpt()); %> </H1> Session[string name]
</BODY> </HTML> Application espace de donnes partag entre toutes les ASP.NET
idem Session

Cache donnes gardes en cache par le serveur


Directive Import
Server information sur le serveur, inclusion, dlgation de pages
Trace gnrer des traces d'excution
<%@ Import Namespace = "..."> using

ASP.NET 11 Lionel Seinturier ASP.NET 12 Lionel Seinturier


1. Dveloppement 1. Dveloppement
Rcupration des donnes d'un formulaire Rcupration des donnes d'un formulaire
Proprit Params de l'objet prdfini Request <%@ Page Language="c#" %>
<HTML> <BODY>
! retourne le texte saisi <H1>Exemple de rsultat</H1>
Bonjour
! ou null si le nom de paramtre n'existe pas
<% Response.Write( Request.Params.Get("prenom") ); %>
<% Response.Write( Request.Params.Get("nom") ); %>
</BODY> </HTML>
<HTML> <BODY>
<FORM ACTION="http://..."
METHOD=POST>
Nom <INPUT NAME="nom"> <P>
Prnom <INPUT NAME="prenom"> <P>
<INPUT TYPE=SUBMIT VALUE="Envoi">
<INPUT TYPE=RESET clic
VALUE="Remise zro">
</FORM>
</BODY> </HTML>

ASP.NET 13 Lionel Seinturier ASP.NET 14 Lionel Seinturier

1. Dveloppement 1. Dveloppement
Inclusion de pages ASP.NET 4 Dlgation de page
ASP.NET 1
aggrgation des rsultats fournis Une page peut dlger le traitement d'une requte une autre
par plusieurs page ASP.NET 5 ! prise en compte complte de la requte par la page dlgue
! meilleure modularit ASP.NET ASP.NET 2
! meilleure rutilisation Mthode Server.Transfer
Tout ce qui est aprs Transfer est ignor
ASP.NET 3
Mthode Server.Execute

<%@ Page Language="c#" %>


Fichier inc.aspx <%@ Page Language="c#" %>
<HTML> <BODY> <HTML> <BODY>
<%@ Page Language="c#" %>
<H1>ASP.NET principale</H1> <H1>ASP.NET principale</H1>
<% <%
<HTML> <BODY>
Server.Execute(" inc.aspx "); Server.Transfer(" transf.aspx ");
<H1>ASP.NET incluse</H1>
%> %>
</BODY> </HTML>
</BODY> </HTML> </BODY> </HTML>

URL URL

ASP.NET 15 Lionel Seinturier ASP.NET 16 Lionel Seinturier


1. Dveloppement 1. Dveloppement
Gestion des erreurs Exemple de gestion d'erreur
<%@ Page Language="c#" %> Si hasard = 0
Erreur d'excution du code
<HTML> <BODY> page d'erreur par dfaut
ex. : NullReferenceException, DivideByZeroException, <H1>Pourvu ... !!</H1>
<% Random r = new Random();
! dans tous les cas, erreur rcupre dans le navigateur client double h = (double)r.Next();
int hasard = (int) (h/Int32.MaxValue*5); %>
<H1> <% Response.Write(12/hasard); %> </H1>
</BODY> </HTML>
2 possibilits

conserver la page par dfaut construite par le serveur Web


en concevoir une adapte aux besoins particuliers de l'application

ASP.NET 17 Lionel Seinturier ASP.NET 18 Lionel Seinturier

1. Dveloppement 1. Dveloppement
Exemple de gestion d'erreur Gestion des traces

<%@ Page Language="c#" <%@ Page Language="c#" %> debugger


ErrorPage="err.aspx" %> contrler/inspecter le droulement d'une appli web
<HTML> <BODY> <HTML> <BODY> ! la main : Response.Write : lourd, long enlever pour passer en prod.
<H1>Pourvu ... !!</H1>
<% Random r = ... %> <h1>Le 0 est sorti !!</h1>
<H1> <% ... (12/hasard) %> </H1> </BODY> </HTML>
</BODY> </HTML> Objet prdfini Trace System.Web.TraceContext

Trace.Write(string message)
Trace.Write(string categorie, string message)
Trace.Write(string categorie, string message, Exception e)
Si hasard = 0 idem mthode Warn : les messages apparaissent en rouge dans les traces
page d'erreur err.aspx

ASP.NET 19 Lionel Seinturier ASP.NET 20 Lionel Seinturier


1. Dveloppement 1. Dveloppement
Activation des traces Exemple factorielle Les objets prdfinis ASP.NET
chaque itration :
<%@ Page Trace="true" %> Request la requte qui a provoqu le chargement
Trace.Write( "i=" + i + " / fact=" + fact );
System.Web.HttpRequest

.Params les paramtres de la requtes


.RawUrl l'URL complte
.FilePath le chemin du fichier dans l'URL /foobar/c2/WebForm1.aspx
.PhysicalPath le chemin du fichier sur disque
c:\Inetput\wwwroot\foobar\c2\WebForm1.aspx
.PhysicalApplicationPath la racine de l'application
c:\Inetput\wwwroot\foobar\

.Headers les en-ttes de la requte HTTP


.UserHostName l'@ du client
.UserHostAddress l'IP du client
.UserLanguages les prfrences du client en terme de langues
.Cookies lecture d'un cookie

ASP.NET 21 Lionel Seinturier ASP.NET 22 Lionel Seinturier

1. Dveloppement 1. Dveloppement
Les objets prdfinis ASP.NET Les objets prdfinis ASP.NET
Response la rponse une requte Session gestion d'une session client
System.Web.HttpResponse System.Web.SessionState.HttpSessionState

Fonctionne comme une table de hachage indice


.ContentType le type MIME du contenu retourn au client (text/html, image/gif, )
.Cache gestion de la politique de cache de la rponse (date expiration)
Session["key"] = object
object res = Session["key"] // null si la cl n'existe pas
.SetCookie positionnement d'un cookie chez le client
object res = Session[int] le i-me lment de la session
Session.Count le # d'lments dans la session
Session.GetEnumerator() un itrateur sur toutes les lments de la session
Session.Remove("key")
Session.RemoveAt(int)
Session.RemoveAll()

Session cre lors de la 1re visite d'un client (Session.IsNewSession vaut true)
Session.Timeout dlai d'inactivit (en minutes) au del duquel la session expire

ASP.NET 23 Lionel Seinturier ASP.NET 24 Lionel Seinturier


1. Dveloppement 1. Dveloppement
Les objets prdfinis ASP.NET Les objets prdfinis ASP.NET
Application espace de donnes partag par tous les clients Cache espace de donnes partag par tous les clients
System.Web.HttpApplicationState par rapport Application : peut avoir une dure de vie limite
System.Web.Caching.Cache
Fonctionne comme une table de hachage indice
Server informations sur le server
Application["key"] = object System.Web.HttpServerUtility
object res = Application["key"] // null si la cl n'existe pas
object res = Application[int] le i-me lment de la session
Application.Count le # d'lments dans la session
Application.GetEnumerator() un itrateur sur toutes les lments de la session
Application.Remove("key")
Application.RemoveAt(int)
Application.RemoveAll()

ASP.NET 25 Lionel Seinturier ASP.NET 26 Lionel Seinturier

Plan 2. Contrles
Philosophie ASP.NET

1. Dveloppement Sparer
rendu graphique
2. Contrles traitement
2.1 Contrles lmentaires
2.2 Prsentation de donnes
2 fichiers
2.3 Programmation de contrles
.aspx
3. MVC le code de prsentation et celui des contrles
fichier XTHML (HTML 4.0 formul en XML)
Web form
.aspx.cs , .aspx.vb ,
fichier dit codebehind
classe contenant les traitements

ASP.NET 27 Lionel Seinturier ASP.NET 28 Lionel Seinturier


2. Contrles 2. Contrles
Les contrles Les contrles existant par dfaut
Composants graphiques pour l criture de pages ASP.NET toutes les balises HTML standards (<input> <img> <p> )
composants supplmentaires fournis par MS (redondants avec HTML mais + volus)
pour agir avec l'utilisateur : lui prsenter de l'information
pour ragir aux actions de l'utilisateur : dclencher des traitements affichage : Label, Image, Panel, Tabel
bouton : Button, Hyperlink, ImageButton, LinkButton
utilisation en drag-and-drop dans VS pour la conception page web
saisie : TextBox, CheckBox, RadioButton, FileUpload,
analogue atelier conception IHM en client lourd
liste : ListBox, DropDownList,
validation : CompareValidator, RequiredFieldValidator, RangeValidator,
classe / objet
divers : Calendar
proprits : les caractristiques d'affichage (ex. Text pour un TextBox)
donnes : DataList, GridView, DetailsView
vnements : ractions (clic, frappe, changement, )
login
autant d'objets par page que de contrles "dposs" sur la page .
interaction avec la page interaction avec les objets
rendu HTML de la page partir de l'tat des objets + de nouveaux contrles peuvent tre programms par l utilisateur

ASP.NET 29 Lionel Seinturier ASP.NET 30 Lionel Seinturier

2.1 Contrles lmentaires 2.1 Contrles lmentaires


Exemple Exemple
Contrles TextBox et Button Contrles TextBox et Button Fichier WebForm1.aspx

<%@ Page Language="c#" CodeFile="WebForm1.aspx.cs" Inherits="WebForm1" %>


<html>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="MyTextBox" runat="server" />
<asp:Button ID="MyButton" runat="server" OnClick="MyButton_Click" />
</form>
</body>

Fichier WebForm1.aspx.cs

public partial class WebForm1 : System.Web.UI.Page {


public void MyButton_Click(object sender, System.EventArgs e) {
MyTextBox.Text = "Hello world!";
} }
demo >>

ASP.NET 31 Lionel Seinturier ASP.NET 32 Lionel Seinturier


2.1 Contrles lmentaires 2.1 Contrles lmentaires
Contrle TextBox Association page - code
Proprits principales 1re solution : .aspx + codebehind + association (On) dclare dans .aspx
ID : identificateur unique (proprit prsente pour tous les contrles)
2me solution : sans codebehind
Text : le texte affich
MaxLength : taille max du texte dfinir le code des mthodes de traitements des vnements dans le fichier .aspx
TextMode : SingleLine | MultiLine | Password entre des balises <script runat="server"> et </script>
ReadOnly : false | true ! 1 seul fichier grer, moins modulaire
Columns : le nombre de colonnes
Rows : le nombre de lignes (MultiLine)
BackColor, BorderColor, ForeColor : couleurs 3me solution : .aspx + codebehind + association (On) dclare dans codebehind
BorderStyle, BorderWidth, Font : affichage ne pas utiliser l'attribut OnClick dans le fichier .aspx
ajouter un gestionnaire d'vnement sur le bouton dans le code C#
en redfinissant la mthode excute lors du chargement (OnInit)
vnement principal
! couplage moins fort entre le fichier .aspx et le codebehind
TextChanged : le texte change (mthode de raction OnTextChanged) ! plus difficile manipuler, moins intuitif

ASP.NET 33 Lionel Seinturier ASP.NET 34 Lionel Seinturier

2.2 Prsentation de donnes 2.2 Prsentation de donnes


Contrle GridView Contrle DataSource
prsentation d'information sous forme de tableau source des donnes afficher
dition, suppression SqlDataSource : un SGBD (SQL Server, )
pager automatique AccessDataSource : un fichier Access
tri XmlDataSource : un fichier XML
ObjectDataSource : des objets (C#, VB, )
Exemple d'utilisation
dition des donnes d'une table SQL
Dfinition d une SqlDataSource
une connection string (~ chemin d accs aux donnes)
! associ un contrle DataSource 4 commandes SQL : SELECT, INSERT, DELETE, UPDATE

ASP.NET 35 Lionel Seinturier ASP.NET 36 Lionel Seinturier


2.2 Prsentation de donnes 2.2 Prsentation de donnes
Exemples Contrle GridView
Exemple de DataSource Proprits principales
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ID
ConnectionString="Driver={SQL Server};server=localhost;database=master"
AllowPaging, AllowSorting
ProviderName="System.Data.Odbc"
SelectCommand="SELECT * FROM [foo]" AutoGenerateColumns
DeleteCommand="DELETE FROM [foo] WHERE [nom] = ?" AutoGenerateDeleteButton (idem Edit, Select)
InsertCommand="INSERT INTO [foo] ([nom], [age]) VALUES (?, ?)"
UpdateCommand="UPDATE [foo] SET [age] = ? WHERE [nom] = ?"> Rows : les lignes affiches dans le GridView
</asp:SqlDataSource> SelectedIndex : l'indice de la ligne slectionne
ex. utilisation : GridView1.Rows[GridView1.SelectedIndex].Cells[0].Text
Exemple de GridView EditIndex, PageIndex
<asp:GridView ID="GridView1" runat="server"
DataSourceID="SqlDataSource1" DataKeyNames="nom" vnements principaux
AutoGenerateColumns="True"
AllowPaging="True" PageSize="4" AllowSorting="True" RowUpdating : juste avant de mettre voir une ligne
AutoGenerateEditButton="true" AutoGenerateDeleteButton="true"> RowUpdated : aprs avoir mis jour une ligne
</asp:GridView> demo >> idem SelectedIndexChanging/ed, Sorting/ed, RowDeleting/ed, PageIndexChanging/ed

ASP.NET 37 Lionel Seinturier ASP.NET 38 Lionel Seinturier

2.2 Prsentation de donnes 2.2 Prsentation de donnes


Contrle DetailsView Exemple
prsentation sous forme de fiches
mme action que GridView (dition, suppression)
action supplmentaire : ajout
action manquante : slection

<asp:DetailsView ID="DetailsView1" runat="server"


DataSourceID="SqlDataSource1" DataKeyNames="nom"
AutoGenerateRows="true"
AutoGenerateEditButton="True"
AutoGenerateDeleteButton="True"
AutoGenerateInsertButton="True"
AllowPaging="True" >
</asp:DetailsView>

demo >>

ASP.NET 39 Lionel Seinturier ASP.NET 40 Lionel Seinturier


2.3 Programmation de contrles 2.3 Programmation de contrles
Contrles dfinis par l'utilisateur (Web User Control) Contrles dfinis par l'utilisateur
factorisation de code HTML et de scripts <%@ Register
fichier .ascx TagPrefix prfixe XML pour le contrle
TagName identifiant du contrle
<table><tr> Src URL du fichier .ascx
<td><asp:textbox id="jour" runat="server" /></td><td>/</td>
<td><asp:textbox id="mois" runat="server" /></td><td>/</td> <%@ Register TagPrefix="foo" TagName="bar" Src="Date.ascx" %>
<td><asp:textbox id="annee" runat="server" /></td> <%@ Page Language="c#" %>
<html><body>
<script language="c#" runat="server"> <form runat="server">
public string Jour { // les proprits du contrle <foo:bar id="JMA" runat="server" />
get { return jour.Text; } <asp:label id="Label" runat="server" />
set { jour.Text=value; } } <asp:button id="Button" text="Go!" runat="server" onclick="Click" />
/* idem Mois, Annee */ </form>
</script> <script runat="server">
void Click(object sender, System.EventArgs e) {
</tr></table> Label.Text = JMA.Jour;
}
</script></body></html>

ASP.NET 41 Lionel Seinturier ASP.NET 42 Lionel Seinturier

2.3 Programmation de contrles 2.3 Programmation de contrles


Contrles dfinis par Contrles dfinis par l'utilisateur
l'utilisateur
une classe est gnre pour chaque contrle (ex : Date_ascx)
instancie lorsqu'on l'utilise <foo:bar id="JMA" runat="server" />

Alternativement
peut tre instancie par programme LoadControl("Date.ascx")
ajoute dynamiquement une page

<script runat="server">
clic void Page_Load() {
Control dt = LoadControl("Date.ascx");
((Date_ascx)dt).Jour = 12;
Frm.Controls.Add(dt);
}
</script>
<form id="Frm" runat="server">
...

ASP.NET 43 Lionel Seinturier ASP.NET 44 Lionel Seinturier


2.3 Programmation de contrles Plan
Autre faon de dfinir des contrles utilisateur
tendre System.Web.UI.WebControls.WebControl 1. Dveloppement
redfinir CreateChildControls
2. Contrles
Avantage : le contrle peut-etre dfini l'aide d'un DOM HTML
! on ne se proccupe pas d'crire le code HTML 2.1 Contrles lmentaires
2.2 Prsentation de donnes
public class MyWebControl : WebControl {
protected override void CreateChildControls() {
2.3 Programmation de contrles
Table tbl = new Table();
TableRow row = new tableRow();
TableCell cell = new TableCell();
3. MVC
TextBox box = new TextBox();
box.ID = "jour";
cell.Controls.Add(box);
row.Cells.Add(cell);
table.Rows.Add(row);
Controls.Add(table);
} }

ASP.NET 45 Lionel Seinturier ASP.NET 46 Lionel Seinturier

3. MVC 3. MVC
Model View Controller Contrleur
1978 Smalltalk Xerox PARC reoit les requtes des clients
nombreux langages et frameworks Web (Ruby on Rails, JSF, Spring, etc.) renvoie les rponses

principe de sparation des proccupations (separation of concerns) contient des mthodes correspondant des actions
modle, vue et contrleur dans des domaines spars qui sont mis en relation avec une vue
qui peuvent ou pas correspondre des classes, mthodes, packages, etc. qui intragissent avec le modle
pas de rgles rcupre des donnes dans le modle
conventions les renvoie l'utilisateur via une vue

ASP.NET 47 Lionel Seinturier ASP.NET 48 Lionel Seinturier


3. MVC 3. MVC
Contrleur Contrleur
hrite de System.Web.Mvc.Controller possibilit de dclarer des paramtres
suffixe Controller public class HelloWorldController : Controller {
une mthode par action public string Greet( string id ) {
URL d'invocation en fonction du nom de la mthode return "Hello World "+id;
} }
public class HelloWorldController : Controller { http://localhost:8080/helloworld/greet/Bob
public string Greet() {
return "Hello World!";
} } en gnral les contrleurs retournent une vue
http://localhost:8080/helloworld/greet/Bob
public ActionResult Index( int id ) {
Compte compte = db.Comptes.Find(id);
return View(compte);
Controller fournit le mcanisme qui reoit/renvoie la requte HTTP }
la dcode
recherche la mthode invoquer en fonction de l'URL

ASP.NET 49 Lionel Seinturier ASP.NET 50 Lionel Seinturier

3. MVC 3. MVC
Vue Vue
ASP.NET ou Razor Razor fournit un objet utilitaire prdfini @Html
Razor : syntaxe HTML avec du code C# (ou VB) pour dfinir des vues simplifie notamment la gnration de formulaire d'dition de donnes
fichier .cshtml
@Html.ActionLink("Modifier la fiche","Edit")
HTML avec @code ou @{ ... }
// gnre un lien HTML vers l'action Edit du contrleur associ la vue
// quivalent <a href="/.../Edit">Modifier la fiche</a>
<ul>
@{ var hello = "Hello world at ";
@Html.BeginForm()
var time = DateTime.Now;
@Html.TextBox("Ville","valeur par dfaut")
var msg = hello + time; }
@Html.Label
@for( int i=0 ; i < 10 ; i++ ) {
@Html.ListBox
<li>@i</li>
...
}
<b>Message</b>: @msg
</ul>
voir par exemple pour plus d'informations sur la syntaxe
http://www.mikesdotnetting.com/article/184/html-helpers-for-forms-in-razor-web-pages
simplifie l'criture des pages par rapport .aspx avec <% ... %>

ASP.NET 51 Lionel Seinturier ASP.NET 52 Lionel Seinturier


3. MVC 3. MVC
Transmission de donnes entre contrleur et vue Modle
object ViewBag classe dfinissant les donnes mtier de l'application
object dynamique, pas de champ prdfini une proprit par donne
champs dfinis en fonction des besoins classe additionnelle hritant de System.Data.Entity.DbContext
public class HomeController : Controller {
public ActionResult TestData() { using System.Data.Entity;
ViewBag.Time = DateTime.Now;
ViewBag.Foo = "Bar"; public class Compte {
return View(); public int Id { get; set; }
} } public string Titulaire { get; set; }
public double Solde { get; set; }
}
Vue
public class CompteDbContext : DbContext {
<h2>TestData View</h2> public DbSet<Compte> Comptes { get; set; }
<h3>Il est : @ViewBag.Time</h3> }
<h3>Foo : @ViewBag.Foo</h3>

demo >>

ASP.NET 53 Lionel Seinturier ASP.NET 54 Lionel Seinturier

3. MVC 3. MVC
Modle Route
oprations courantes effectues par les vues sur DbContext (voir Entity Framework) la 4me composante de MVC
permet d'aiguiller les requtes HTTP vers un contrleur particulier
CompteDbContext db = new CompteDbContext(); /App_Start/RouteConfig.cs
db.Comptes.ToList(); // liste des comptes mthode static RegisterRoute
Compte compte = db.Comptes.Find(42); // recherche d'un compte
public class RouteConfig {
Compte compte = new { Id=42, Titulaire="Bob", Solde=123 }; public static void RegisterRoute {
db.Comptes.Add(compte);
routes.MapRoute( "Product", // nom de la route
db.SaveChanges(); // ajout d'un compte
"product/{action}/{id}", // pattern URL
Compte compte = db.Comptes.Find(42); new { controller="Product", action="Index", id="" } );
compte.Solde += 100;
db.SaveChanges(); // modification d'un compte routes.MapRoute( "Default",
"{controller}/{action}/{id}",
Compte compte = db.Comptes.Find(42); new { controller="Home", action="Index", id="" } );
db.Comptes.Remove(compte); } }
db.SaveChanges(); // suppression d'un compte

ASP.NET 55 Lionel Seinturier ASP.NET 56 Lionel Seinturier


3. MVC 3. MVC
Route Ressources en ligne
alternativement directement l'aide d'annotations sur le contrleur nombreuses
technique dite attribute routing
http://www.asp.net/mvc

[RoutePrefix("reviews")]
tutoriel
http://www.asp.net/mvc/overview/getting-started/
public class ReviewsController : Controller {
introduction/getting-started
[Route] // accs via http://...:../reviews
http://www.intertech.com/Resource/UserGroup/MVCAndEF.pdf
public ActionResult Index() {...}

[Route("{reviewId}")] // /reviews/42
public ActionResult Show( int reviewId ) {...}

[Route("{reviewId}/edit")] // /reviews/99/edit
public ActionResult Edit( int review ) {...}
}

ASP.NET 57 Lionel Seinturier ASP.NET 58 Lionel Seinturier

You might also like