Formation sur le développement en ASP.NET
![Formation sur le développement en ASP.NET](/images/remos_downloads/id-2286.2286.pdf_thumb_prev.jpg)
1 Informations générales (4) 5
2 Avant de commencer (11) 6
3 Installation (10) ..9
4 WebForms (154) .12
4.1. Application (14) ..13
4.1.1. (7) .14
4.1.2. Gestionnaire HTTP et modules HTTP (7) 17
4.2. Pages (15) .. 21
4.2.1. Cycle de vie (1) ..29
4.3. Contrôles (106) 31
4.3.1. Général (8) .32
4.3.2. Contrôles serveur (WebControl) (66) ..36
4.3.2.1. Contrôles HTML (HtmlControls) (2) ..37
4.3.2.2. Contrôles standards (25) .38
4.3.2.2.1. Button (1) 39
4.3.2.2.2. CheckBox (1) 40
4.3.2.2.3. DropDownList (10) 41
4.3.2.2.4. Label (4) ..48
4.3.2.2.5. Repeater (1) 50
4.3.2.2.6. TextBox (4) 51
4.3.2.2.7. UploadFile (1) ..52
4.3.2.3. Contrôles riches (21) 53
4.3.2.3.1. Calendar (2) .. 54
4.3.2.3.2. DataGrid (19) 56
4.3.2.4. Contrôles AJAX (3) ..644.3.2.5. Contrôles Silverlight (2) .65
4.3.2.6. WebControls Gratuits (13) 67
4.3.3. Contrôles personnalisés (Custom Controls) (6) . 71
4.3.4. Contrôles de validation (17) .75
4.3.4.1. RequiredFieldValidator (2) 78
4.3.4.2. RangeValidator (1) .79
4.3.4.3. CompareValidator (1) ..80
4.3.4.4. RegularExpressionValidator (2) . 81
4.3.4.5. CustomValidator (3) . 82
4.3.4.6. ValidationSummary (1) .. 85
4.3.5. Contrôles utilisateur (User Controls) (9) 86
4.4. Scriptlets (5) ..92
![](/images/remos_downloads/detail/22/coursAsp-id2286.2286.pdf-006.jpg)
4.5. Evénements (1) 96
4.6. Web.Config (10) .98
- Coté serveur et C# (45) 102
5.1. Manipulations des fichiers (12) 104
5.2. Manipulations des processus (1) . 110
5.3. Manipulations des nombres (3) 111
5.4. Manipulations des chaînes de caractères (2) .113
5.5. Manipulations des dates (3) 114
5.6. Conversions (4) .116
5.7. WMI (2) 119
5.8. Transferts FTP (2) .. 121
5.9. Divers (13) ..123
- Programmation coté client (24) 128
6.1. Javascript (23) 129
6.1.1. Communication Javascript et Code Behind (4) 130
6.1.2. Fenêtre et Popup (8) ..132
6.1.3. Impression (3) 135
6.1.4. Sessions (2) .137
6.1.5. Manipulation du clavier (2) 139
6.1.6. Divers (3) .140
6.2. Ajax (1) .142
- Gestion de l'état (21) .143
7.1. ViewState (1) .144
7.2. Session State (8) ..145
7.3. Application State (2) ..149
7.4. Cache (3) ..150
7.5. Cookies (3) ..152
7.6. Transferer des données entre les pages (4) 153
- Themes, MasterPage (5) ..156
8.1. MasterPage (3) ..157
8.2. Themes (2) ..158
- Navigation (20) .159
9.1. General (10) 160
9.1.1. Urls (5) ..162
9.1.2. Informations sur le client (3) .165
9.2. Redirections (5) .166
9.3. Site Map (5) 168
- Travailler avec des données (32) . 171
10.1. (24) .. 172
10.1.1. Connexion (4) . 173
10.1.2. Requêtes (7) .174
10.1.3. Divers (11) 179
![](/images/remos_downloads/detail/22/coursAsp-id2286.2286.pdf-009.jpg)
10.1.4. SMO (2) .183
10.2. Liaison de données (Data Binding) (4) .184
10.3. Crystal Report (4) .187
- Visual Studio (24) 189
11.1. Internationalisation (7) 194
- Xml et WebServices (13) .197
- Securité (2) 201
- Déploiement et IIS (7) 202
Auteurs :,
Je tiens à remercier tout particulièrement LFE pour son travail sur la coloration syntaxique du code, et pour toutes les petites mises à jour du système de FAQ qui ont été réalisées.
Je remercie aussi :
Clément Cunin pour son travail sur ce système de génération de FAQ.
Nono40 pour son outil d'édition XML sans lequel la FAQ serait sortie bien plus tard ;-).
Alacazam pour la correction de l'orthographe ;-).
L'ensemble de l'équipe des rédacteurs depour leurs remarques constructives.
Sommaire > Informations générales
Comment bien utiliser cette faq ?
Auteurs :,
Le but :Cette faq a été conçue pour être la plus simple possible d'utilisation. Elle tente d'apporter des réponses simples et complètes aux questions auquelles ont souvent été confrontés les développeurs .
L'organisation :Les questions sont organisées par thème, rendant la recherche plus facile.
Les réponses :Les réponses peuvent être complétées de liens vers d'autres réponses, vers la documentation en ligne de Microsoft ou vers un autre site en rapport.
Nouveautés et mises à jour :Lors de l'ajout ou de la modification d'une question/réponse, un indicateur est placé à coté du titre de la question. Cet indicateur reste visible pour une durée de 15 jours afin de vous permettre de voir rapidement les modifications apportées.
J'espère que cette faq pourra répondre à vos questions. N'hésitez pas à nous faire part de tous commentaires/remarques/ critiques.
lien : Comment participer à cette faq ?
Auteurs :,
Cette faq est ouverte à toute collaboration. Pour éviter la multiplication des versions, il serait préférable que toute collaboration soit transmise aux administrateurs de la faq.
Plusieurs compétences sont actuellement recherchées pour améliorer cette faq :
Rédacteur :Bien évidemment, toute nouvelle question/réponse est la bienvenue.
Correcteur :Malgré nos efforts des fautes d'orthographe ou de grammaire peuvent subsister. Merci de contactersi vous en débusquez une Idem pour les liens erronés.
lien : Quels sont les droits de reproduction de cette faq ?
Auteurs :,
Merci de contacter les auteurs pour toute copie, intégrale ou partielle de ce document, voir Comment participer à cette faq ?.
lien : Comment participer à cette faq ?
Auteurs :,
TOUS !!! ;)
On peut se connecter à tous les SGBD via ODBC il suffit donc que le SGBD possède des drivers ODBC. Cependant, on sait qu'une connexion à un SGBD via ODBC a tendance à faire légèrement chuter les performance par rapport à des drivers natifs.
Avec le framework .NET on dispose de drivers natifs pour SQL-server dans le namespace : .SqlClient .
Il existe aussi des drivers natifs pour d'autres SQGBD. Pour MySQL il existe 2 drivers natifs :
Sommaire > Avant de commencer
Sous quel environnement puis-je développer en ?
![](/images/remos_downloads/detail/22/coursAsp-id2286.2286.pdf-012.jpg)
Auteurs :,,
Le plus simple pour faire de l' est d'avoir un Visual studio (2008, 2005). C'est un IDE qui possède de nombreux outils permettant d'améliorer l'efficacité du developpement , il faut par contre disposer d'une licence.
On peut également télécharger un environnement de développement gratuit grâce àen combinaison avec une version du framework .NET.
Enfin, il est possible de faire de l'et d'héberger ses pages sous apache. Mono supporte cependant à ce jour jusqu'à la version 2.0 du pour .
Notez qu'on peut également faire de l' avec un simple éditeur de texte et un serveur web, par exemple IIS.
Pour ce dernier, il vous faut Windows 2000NT pro ou une version supérieure de Windows. Cependant, IIS n'est pas présent sous windows XP familial, il vous faudra donc :
- Soit "forcer" l'installation de IIS sous windows XP familial, à l'aide d'un CD d'une version de windows possédant IIS
- Soit installer cassini : un IIS5 "light" qui permet le developpement mais pas la mise en production. Cassini est un composant de webmatrix.
note : l'installation de cassini est la solution la plus simple.
lien :lien :lien : lien :
Auteurs :,
Il est possible de faire de l' avec le bloc note. Cependant, je vous conseille fortement d'utiliser un IDE, surtout qu'il en existe des gratuits ;)
Pour plus de renseignements sur les outils gratuits ou payants avec les témoignages de développeurs :
lien : lien :
- dbProvider qui est payant :
- MySQLnet qui est gratuit, mais encore en béta :
- •
Auteurs :,
Il s'agit plutôt de nouveautés de C# 3.0 qui sont utilisables à travers des projets .
- Les initialiseurs d'objets, qui permettent d'instancier des objets et leurs propriétés en un nombre de lignes de coderéduit.
- Les déclarations de types implicites, avec l'utilisation du mot clé var
- Les types anonymes, qui permettent de créer des types à la compilation
- Les expressions lambdas, pour simplifier l'utilisation de delegates
- Les méthodes d'extensions, qui permettent de rajouter des fonctionnalités à des classes
Auteurs :,
Il s'agit essentiellement de l'intégration de LINQ : avec notamment
Pour Oracle il y a aussi des drivers natifs pour .NET, cet article de MSDN vous explique pourquoi et comment utiliser les drivers natifs d'Oracle en .NET
A l'heure où j'écris cette FAQ, d'autres drivers natifs pour .NET sont en préparation, et IBM a annoncé prochainement des drivers pour DB2.
Puis-je avoir une application ASP3 et une application sur le même serveur ?
Auteurs :,
Oui ! ISS5 (ou plus) peut interpréter en même temps des pages ASP et . On peut même faire un même site avec des pages ASP3 et : c'est d'ailleurs comme ça qu'était fait une première version du site de microsoft. Le seul problème de cohabitation entre ces deux versions d'asp est que les variables de sessions ASP et ne communiquent pas "nativement" entre elles.
lien : Peut-on récupérer des variables de sessions ASP3 en et inversément ?
Auteurs :,
.NET 2.0 améne quelques nouveautés par rapport à la version 1.1. On peut noter les classes génériques (semblables aux templates C++ mais avec beaucoup moins d'erreurs possibles).
C'est principalement en que l'on peut trouver le plus de nouveautés avec principalement:
- nouveaux contrôles (login, )
- sécurité améliorée et conception facilitée (il n'est plus nécessaire de gérer ses accès à la base de données, )
![](/images/remos_downloads/detail/22/coursAsp-id2286.2286.pdf-023.jpg)
- master pages
- accès aux données facilités
- webparts
- profils utilisateurs
- thèmes
Quels sont les équivalents de date() et time() utilisées en asp ?
Auteurs :,
Certes, les fonctions asp paraissent plus simples à écrire mais étant orienté objets, cette notation est tout à fait logique:
.ToShortDateString()
pour récupérer la date et
.ToShortTimeString()
pour l'heure.
- LINQ to Object
- LINQ to DataSet
- LINQ to XML- LINQ to SQL
Et de l'intégration d' AJAX et d'un framework unifié pour le développement Ajax.
On aura aussi à dispositions des nouveaux contrôles serveur ou des contrôles améliorés, tel le ListView ou le DataPager. Le framework 3.5 permet aussi le support WCF pour RSS, JSON,
Existe-t-il un moyen de convertir du en C# et inversément ?
Auteurs :,
Bien sûr. D'ailleurs,l'a mis en ligne pour vous:
Auteurs :,
Oui c'est possible
Pour plus d'infos:
Puis-je écrire le code de mon application en différents langages ?
Auteurs :,
Non, ce n'est pas possible. Cependant vous pouvez écrire les user controls dans un langage et le code de l'application dans un autre.
Sommaire > Installation
Que faut-il installer et dans quel ordre pour faire de l' ?
Auteurs :,
Pour pouvoir faire de l', je vous conseille d'installer les divers composants dans l'ordre suivant :
1)Installer IIS
2)Installer la dernière version de MDAC
3)Installer le dernier service pack pour votre version de windows
4)Installer la dernière version du framework .NET
5)Faire toutes les mises à jours nécessaires pour windows, IIS et le framework .NET Je n'ai jamais vu de problème si on installe les divers composants dans cet ordre là.
![](/images/remos_downloads/detail/22/coursAsp-id2286.2286.pdf-024.jpg)
lien :
Mes webforms ne s'affichent pas et pourtant leur propriété Visible est à true !
Auteurs :,
Si ce problème vient aprés l'installation du framework, c'est que vous n'avez surement pas installé les divers composants dans l'ordre conseillé Que faut-il installer et dans quel ordre pour faire de l' ?. Mais pas de panique il existe un moyen simple pour remédier à ça ;-)
1)Ouvrez la console de commande
2)Allez dans le répertoire courant du framework .NET : $SYSTEMROOT\\Framework\v1.********\ 3)Exécutez : -i
lien : Que faut-il installer et dans quel ordre pour faire de l' ?
J'ai des problèmes d'installation sur un serveur contrôleur de domaines. Que faire ?
Auteurs :,
Ce problème existe avec le framework .NET 1.0, Ce bug a été corrigé dans le framework .NET 1.1. Si vous installez IIS et le framework .NET sur un serveur controleur de domaine, vous aurez une erreur :
"Server Application Unavailable
The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request.
Administrator Note: An error message detailing the cause of this specific request failure can be found in the system event log of the web server. Please review this log entry to discover what caused this error to occur." Et dans le journal d'erreurs de IIS, deux erreurs :
" could not be launched because the username and/or password supplied in the processModel section of the config file are invalid."
" could not be started. HRESULT for the failure: 80004005 "
La solution consiste à créer un compte avec les droits nécessaires, éditer le fichier et dans le mettre à username le nom du compte créé. Une solution plus simple consite à mettre SYSTEM comme
J'ai copié l'application sur une machine mais la page est introuvable, que faire ?
Auteurs :,
La plupart du temps, cela est dû au fait que le répertoire virtuel n'a pas été créé. Effectivement, l'habitude de l'utilisation d'environnements de développement tels que Visual Studio font que les bonnes habitudes ont tendance à se perdre ;) Concrètement, lorsque Visual Studio crèe une application, il crée un répertoire dans le dossier InetPub\wwwroot (par défaut) ainsi qu'un répertoire virtuel dans IIS.
Pour l'effectuer de manière manuelle, il suffit de se rendre dans les outils d'administration, cliquer sur "Services Internet (IIS)".
username mais cela implique que votre process aura des droits d'admin sur votre serveur ce qui n'est pas conseillé au niveau de la sécurité.
lien :
Auteurs :,
Ce problème arrive fréquemment, lorsqu'on déploie un site en utilisant Access comme SGBD.
Lorsque l'on installe la version redistribuable du framework .NET sur une machine, les droits du user ASPNET sont plus restreints que lorsqu'on installe le sdk du framework et un IDE. Par défaut, le user ASPNET n'a pas les droits d'écriture sur le répertoire dans lequel se trouve votre fichier .mdb. Le compte ASPNET, qui accède à la base via OleDB, ne peut donc pas, par défaut, créer le fichier .ldb qui permet la gestion des verrous sous access. D'où le message d'erreur ! La solution consiste à donner des droits en écriture sur le répertoire où se trouve le fichier .mdb au user ASPNET. Attention : pour des raisons de sécurité, il vaut mieux "isoler" le .mdb de votre base access dans un répertoire. Vous limitez ainsi les dommages en cas de hack du compte utilisateur ASPNET.
J'ai un message d'erreur à l'ouverture de concernant la version d', à quoi cela est-il dû ?
Auteurs :,
Si à l'ouverture de vous obtenez le message d'erreur suivant: "Visual Studio a détecté que le serveur Web indiqué n'exécute pas la version 1.1 de . Vous ne seriez pas en mesure d'exécuter les applications ou les services Web .", il suffit d'exécuter, en ligne de commande, "aspnet_regiis -i".
Cet exécutable se trouve dans le répertoire du Framework, à savoir "c:\windows\\Framework \" où XXXX peut varier.
Est il possible de faire cohabiter plusieurs versions du framework sur une même machine ?
Auteurs :,
Il est tout à fait possible d'installer un framework version 1 et un version 2 sur la même machine sans aucun souci. Attention, à l'heure actuelle, la désinstallation d'une version 2 peut poser problème (suppression d'éléments nécessaires pour faire fonctionner une version 1).
Enfin, pour finir, vous devriez voir "Site Web > Site Web par défaut" Si c'est bien le cas, un simple clic droit vous ouvrira un menu contextuel permettant d'ajouter un nouveau répertoire virtuel. Il ne reste plus qu'à choisir le répertoire et à lui donner les droits.
Je ne trouve pas d'utilisateur ASPNET sur Windows 2003. Que dois-je faire ?
Auteurs :,
![](/images/remos_downloads/detail/22/id-2286.2286.pdf-000.jpg)
Nous sommes parfois amenés à réaliser des applications sous Windows Xp pour ensuite les porter en production sur un Windows 2003. Souvent aussi, nous donnons les droits à l'utilisateur ASPNET d'exécuter des procédures stockées en faisant un GRANT TO ASPNET. Malheureusement, ASPNET n'existe plus sous Windows 2003. Il est remplacé par IIS_WPG. Il faut donc donner les droits à IIS_WPG au lieu de ASPNET.
J'utilise Access et j'obtiens l'exception suivante: "L'opération doit utiliser une requête qui peut être mise à jour" lors d'un INSERT ou d'un UPDATE. Que faire ?
Auteurs :,
L'utilisateur ASPNET ne peut accéder aux répertoires, pour des raisons de sécurité, que si vous l'avez autorisé de manière explicite. Il est donc nécessaire de donner les droits à ASPNET pour le répertoire dans lequel se trouve votre fichier Access.
Mon navigateur me demande si il faut afficher ou télécharger la page lors de l'appel d'un fichier .aspx. Est-ce normal?
Auteurs :,
Normal? Si connaître la raison permet de dire que c'est normal, alors oui.
IIS ne sait pas faire le mapping entre l'extension et l'action à effectuer. Cela peut être dû à plusieurs raisons, la plus fréquente étant le fait d'avoir réinstallé IIS après avoir installé .
Pour corriger le problème, utilisez l'utilitaire .
Sommaire > WebForms
Comment mettre des balises en commentaire ?
Auteurs :,
Lorsque l'on utilise , la page envoyée au client contient les commentaires et tout ce qui se trouve entre les deux. Pour éviter d'envoyer une partie de la page, il suffit d'utiliser <%-- --%> Dans ce cas, tout ce qui se trouve entre ces balises ne sera pas pris en compte par le serveur.
Faut-il privilégier le code-behind pour des raisons de performance ?
Auteurs :,
Que l'on utilise le code-behind ou non, les performances sont identiques.
Cependant, il est plus aisé de maintenir une application dont le code est séparé de la partie visuelle.
lien :
Quelle est la différence entre Src et Codebehind dans les tags de compilation ?
Auteurs :,
Codebehind est utilisé quand le code est compilé.
Si vous fournissez les fichiers sources, il est nécessaire d'utiliser Src. Les fichiers seront ainsi compilés à l'exécution (Just In Time).
Sommaire > WebForms > Application
Auteurs :,
Le nous est d'une grande utilité dans ce cas.
NamespaceDeveloppez
PublicClassGlobal
Inherits .HttpApplication
Sommaire > WebForms > Application >
Qu'est ce que le ?
Auteurs :,
La classe Global est la classe capable de gérer des évènements du niveau application. Elle se trouve dans un fichier appellé (plus précisément ou suivant le langage de développement). Le est optionnel mais il peut faciliter le développement ainsi que la maintenance d'applications. On l'utilisera, par exemple , pour écrire une entrée dans un fichier de logs lorsqu'une exception est lancée et n'est pas gérée. Il existe également d'autres utilisations possibles comme le calcul du temps nécessaire à une requête, un compteur de hits, Concrètement, la classe Global est une classe dont il n'existe qu'une instance (ce que l'on appelle « singleton » dans le jargon).
lien :
Auteurs :,
![](/images/remos_downloads/detail/22/id-2286.2286.pdf-001.jpg)
Ce fichier se trouve obligatoirement dans le répertoire racine de l'application . Il y en a un et un seul par application.
lien :
Auteurs :,
NamespaceDeveloppez
PublicClassGlobal
Inherits .HttpApplication
PublicSharednbHitsAsInteger
ProtectedSubApplication_Start(ByValsenderAsObject,ByValeAsEventArgs) nbHits=0EndSub
ProtectedSubApplication_BeginRequest(ByValsenderAsObject,ByValeAsEventArgs)
(System.Threading.Interlocked.Increment(nbHits), nbHits-1)
EndSub
EndClass
EndNamespace
Comment envoyer un mail décrivant l'érreur quand mon application lève une exception ?
Auteurs :,,
Dans le :
Imports
Imports
SubApplication_Error(ByValsenderAsObject,ByValeAsEventArgs)
Comment savoir le temps nécessaire à l'exécution d'une requête?
Auteurs :,
NamespaceDeveloppez
PublicClassGlobal
Inherits .HttpApplication
PublicSharedtempsAsInteger
PrivatedebutAsDateTime
ProtectedSubApplication_BeginRequest(ByValsenderAsObject,ByValeAsEventArgs) debut=EndSub
ProtectedSubApplication_EndRequest(ByValsenderAsObject,ByValeAsEventArgs) temps=debut-EndSub
EndClass
EndNamespace