2010-10-26 23 views
1

L'année dernière, nous avons déplacé toutes nos nouvelles fonctionnalités vers ASP.NET MVC. Cependant, nous avons encore un tas de pages WebForms héritées avec beaucoup de code JavaScript, et nous n'aurons pas l'occasion de les mettre à jour de sitôt.ASP.NET 4 webforms clientid suffixé avec `_0`

Plus récemment, nous avons également déplacé vers ASP.NET 4, et cela semble avoir brisé une charge du code JavaScript sur ces pages héritées.

Où avant l'ID client serait:

ctl001_masterControlName_panelControlName_controlWeWant 

Maintenant, ils sont devenus:

ctl001_masterControlName_panelControlName_controlWeWant_0 

Où est-ce que _0 suffixe vient? Il n'y en a qu'un controlWeWant dans panelControlName, donc le suffixe n'ajoute aucune valeur.

Je sais que les identifiants de clients codés en dur sont une mauvaise idée avec WebForms; L'une des raisons pour lesquelles nous avons migré vers ASP.NET MVC était l'horrible HTML produit par WebForms. Cependant, pour ce code hérité, nous sommes coincés avec, et je préfère ne pas le changer (jusqu'à ce que le jour arrive où nous avons du temps libre pour le faire correctement).

Pourquoi ASP.NET 4 ajoute-t-il le suffixe _0?

Puis-je l'éteindre?

Existe-t-il un autre moyen de l'éviter?

Répondre

1

Découvrez What is New in ASP.NET 4.0 - ClientID Generation for a Cleaner MarkUp. Il explique quelques nouvelles fonctionnalités dans ASP.NET 4.0 quand il s'agit de la génération d'ID.

+0

C'est génial - on dirait que les futurs programmeurs de WebForms seront capables de produire un HTML un peu moins affreux (ceux qui n'ont pas encore été exécutés pour les collines MVC). Malheureusement, il ne répond pas à ma question: pourquoi a-t-il ajouté '_0' à l'ID du client et comment puis-je le supprimer sans tout réécrire? – Keith

+0

Essayez ceci: http://forums.asp.net/p/1305766/2558955.aspx :) – Onkelborg

+0

Merci, mais cela décrit un problème similaire avec une cause différente - ils étaient des ID de duplication afin que le suffixe était automatiquement généré (sur Asp.Net 2 aussi par les regards de celui-ci). J'ai une page qui a fonctionné dans Asp.Net 2, mais dans 4 le même code (recompilé) a maintenant le '_0 'suffixé aux identifiants de client et je veux qu'il se comporte comme c'était l'habitude. – Keith