Salut,
J'ai toujours été gêné, comme beaucoup je pense, par la définition automatique de l'identifiant d'un WebControl par .net dans le rendu coté client. Un simple "monGridView" devient "ctl00_CPH_content_monGridView". J'ai toujours pensé que l'identification d'un contrôle est un problème de développeur pas de framework.
Je me suis donc penché sur la question et, doué comme je suis, par "penché sur la question" j'entends "penché sur google".
La solution existe : surcharger la propriété .ClientID().
J'ai trouvé deux déclinaisons de cette solution, la surcharge de la propriété de chaque WebControl et la surcharge de la propriété de la classe Control.
J'ai implémenté la première solution, mais elle a pour inconvénient de surcharger la propriété contrôle par contrôle. Or, la seconde option est plus intéressante puisque justement on surchargerait la classe Control directement, mais je n'arrive pas à l'implémenter.
Mon application plante en retournant comme message d'erreur :Voici donc le code ne fonctionnant pas.Balise server inconnue
La classe :La code aspx :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Public Class Control Inherits System.Web.UI.Control Public Overrides ReadOnly Property ClientID() As String Get Return MyBase.ID End Get End Property Public Overrides ReadOnly Property UniqueID() As String Get Return MyBase.ID End Get End Property End ClassSi, par contre, je définis une classe Label héritant de System.Web.UI.WebControls, ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <%@ Page Language="VB" MasterPageFile="~/Home.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Default" title="Page sans titre" %> <%@ Register assembly="maBibliotheque" namespace="maBibliotheque" TagPrefix="cc" %> <asp:Content ID="Content1" ContentPlaceHolderID="CPH_content" Runat="Server"> <cc:label id="coucou" runat="server">COUCOU</cc:label> </asp:Content>
Avez-vous une idée?
Merci par avance.
Partager