, nico-pyright(c) Découvrez la refonte de la FAQ ASP.NET, en VB.NET.
Au menu :
- Refonte du plan de la FAQ
- Mise à jour de questions/réponses obsolètes
- Ajout de 60 nouvelles questions/réponses
Vous pouvez laissez vos avis/commentaires/suggestions sur ce billet ou sur le forum
Vous devez être identifié pour poster un commentaire.
, nico-pyright(c) Découvrez la refonte de la FAQ ASP.NET, en C#.
Au menu :
- Refonte du plan de la FAQ
- Mise à jour de questions/réponses obsolètes
- Ajout de 28 nouvelles questions/réponses
Vous pouvez laissez vos avis/commentaires/suggestions sur ce billet ou sur le forum
Vous devez être identifié pour poster un commentaire.
, nico-pyright(c) Ce cher Jérôme me faisait remarquer à juste titre que cette entrée de la FAQ : Peut-on avoir plusieurs formulaires avec runat=server dans une même page ? n'était pas très étoffée...
Et il a tout à fait raison.
Mais pourquoi ne peut-on pas avoir plusieurs formulaires avec runat=server sur une même page ?
Il serait d'ailleurs plus judicieux de préciser qu'on ne peut pas avoir plusieurs formulaires visible sur la même page.
En effet
1: <form id="form1" runat="server">
2: </form>
3: <form id="form2" runat="server" visible="false">
4: </form>
ne posera pas de problème d'exécution, tandis que :
1: <form id="form1" runat="server">
2: </form>
3: <form id="form2" runat="server">
4: </form>
levera l'HttpException suivante :
A page can have only one server-side Form tag.
Le modèle de programmation à formulaire unique (Single Form Model) est fait de manière à n'avoir qu'une seule balise form visible, avec l'attribut runat = server. Cela permet à ASP.NET de gérer les contrôles qui sont posés dans le formulaire, ayant la balise runat=server, coté serveur. Cela permet entre autre de pouvoir y accéder dans le code behind directement.
Le modèle de développement impose que les éléments de formulaire soient postés à la même page qui les a soumis, ce qui permet aux mécanismes d'ASP.NET (ViewState, etc ...) de fonctionner correctement.
Pour la curiosité, la pile d'appel au moment de l'exception nous permet de constater que l'exception est levée au moment de l'appel à la méthode System.Web.UI.Page.OnFormRender()
Un petit coup de reflector nous permet de voir
1: internal void OnFormRender()
2: {
3: if (this._fOnFormRenderCalled)
4: {
5: throw new HttpException(SR.GetString("Multiple_forms_not_allowed"));
6: }
7: this._fOnFormRenderCalled = true;
8: this._inOnFormRender = true;
9: }
Cette méthode OnFormRender est appelée au moment du rendu du contrôle HtmlForm. Le code issu de Reflector nous permet bien de constater qu'un boolean est mis à vrai lors du rendu d'un contrôle HtmlForm. Si ce boolean est déjà à vrai, alors l'exception est levée.
Cette entrée de faq sera modifiée à la prochaine (très bientôt) mise à jour.
Vous devez être identifié pour poster un commentaire.
, nico-pyright(c) En voilà un titre long ![]()
Il faut dire qu'il s'agit d'un problème qui arrive dans le cas suivant :
On dispose d'une masterpage, ex (un peu épuré) :
<%@ Master Language="C#" AutoEventWireup="false" CodeBehind="Site1.master.cs" Inherits="testMasterPage.Site1" %>
<html><head runat="server"><title></title></head>
<body>
<form id="form1" runat="server">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>
Lorsque l'on crée une page qui utilise cette masterpage et qui remplit le ContentPlaceHolder, ex :
<%@ Page Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="false" CodeBehind="Default.aspx.cs" Inherits="testMasterPage._Default" %>
<asp:Content runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
<asp:Label ID="leLabel" runat="server" />
</asp:Content>
Si j'essaie d'accéder à mon label dans le OnPreInit de la page, ex :
protected override void OnPreInit(EventArgs e)
{
leLabel.Text = "Mon Label"; // leLabel = null !!
base.OnPreInit(e);
}
J'aurai une exception parce que mon label vaut null. Argh ! Problème !
Vous devez être identifié pour poster un commentaire.
, nico-pyright(c) Bonjour à tous,
j'ai fait la mise à jour des faqs ASP.NET
La FAQ ASP.NET C# : 362 questions à vos réponses, dont 12 nouvelles
La FAQ ASP.NET VB.NET : 312 questions à vos réponses, dont 14 nouvelles
N'hésitez pas à aller y faire un tour.
Pour la prochaine mise à jour, je promets de remettre un peu d'ordre dans le sommaire et de remettre à jour quelques questions/réponses un peu vieillottes...
Bonne lecture.
Vous devez être identifié pour poster un commentaire.
Un mot pour vous annoncer une petite mise à jour des faqs Asp.Net (C# et VB.Net).
La FAQ ASP.NET C# : 350 questions à vos réponses, dont 16 nouvelles
La FAQ ASP.NET VB.NET : 298 questions à vos réponses, dont 21 nouvelles
Vous devez être identifié pour poster un commentaire.
Utilisé dans mon dernier post, PreviousPage peut être fortement typée en rajoutant une directive dans la page destination.
Pour reprendre mon exemple précédent, Page2 pourra recevoir comme directive :
Vous devez être identifié pour poster un commentaire.
Bonjour à tous,
Travaillant au quotidien en asp.net C# et étant trilingue dotnet (
), il est temps de créer une nouvelle catégorie sur mon blog ASP.NET ; ce blog va donc s'enrichir pour parler également d'asp.net puisque je m'occupe désormais des faqs asp.net (C# et VB.net).
Mon premier billet asp.net sera donc l'annonce d'une mise à jour de ces faqs, à savoir :
La FAQ ASP.NET C# : 334 réponses à vos questions dont 33 nouvelles
La FAQ ASP.NET VB.NET : 277 réponses à vos questions dont 48 nouvelles
Que les amoureux du C++/CLI se rassurent, je continuerai toujours à m'occuper de la faq C++/CLI ![]()
Vous devez être identifié pour poster un commentaire.
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Copyright © 2000-2012 - www.developpez.com