[2.0] Surcharger la propriété ClientID()
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 :
Citation:
Balise server inconnue
Voici donc le code ne fonctionnant pas.
La classe :
Code:
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 Class |
La code aspx :
Code:
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> |
Si, par contre, je définis une classe Label héritant de System.Web.UI.WebControls, ça fonctionne.
Avez-vous une idée?
Merci par avance.