2008-11-28 9 views
1

Je cherche à faire un contrôle web où je peux enregistrer des scripts de démarrage client en ligne avec mon aspx parce que je déteste m'enregistrer dans le codebehind!Register Startup Script Control

Un exemple de ce que j'ai jusqu'à présent:

< Ben: StartupScript runat = "server" >

forme var = document.getElementById ("<% = form1.ClientID%>");

</Ben: StartupScript >

Actuellement, je suis redéfinissant la méthode OnPreRender du contrôle, ce qui rend le contenu du contrôle à une chaîne, puis enregistrer manuellement cette chaîne comme un script de démarrage à l'aide ClientScript.RegisterStartupScript sur la page. Je remplace également la méthode Render afin de ne pas rendre le contrôle. Je devrais également noter que j'ai l'attribut ParseChildren défini sur false et l'attribut PersistChildren défini sur true.

Tout semble bien fonctionner, mais mon contrôle permet d'autres contrôles Web à l'intérieur (comme Button). En plus d'être non intuitif, cela peut entraîner des erreurs d'exécution. J'aimerais pouvoir effacer les contrôles mais cela est impossible compte tenu du bloc de code <% ...%>. Donc, est-il possible d'empêcher les développeurs d'intégrer des contrôles enfants tout en autorisant les blocs de code?

En outre, cette idée est-elle bonne ou est-elle fondamentalement erronée? lol.

Merci un bouquet,

Ben

Répondre

1

ça sonne comme une bonne idée, mais si vous passez trop de temps à la lutte contre les comportements hérités/par défaut, alors il peut être plus d'ennuis que cela vaut la peine

s'il s'agit d'un problème ponctuel, une solution peu coûteuse consiste à intégrer directement vos scripts dans l'en-tête d'une page maître ;-)

d'autre part, permettant aux développeurs d'intégrer leurs propres scripts en tant qu'enfants de votre contrôle web mi ght être utile

0

Si vous utilisez des pages maîtres, ajoutez un autre contrôle dans votre section. De cette façon, vous pouvez facilement ajouter css/js à vos en-têtes dans vos pages enfants.

ClientScript.RegisterScript est principalement destiné aux contrôles utilisateur/serveur,