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 :
Balise server inconnue
Voici donc le code ne fonctionnant pas.
La classe :
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 Class
La code aspx :
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>
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.