Transmis par: webmaster actif Mardi 08 Juillet 2003 à 00:06
Je cite : "Dans cet article, nous allons tenter de tordre le cou à l’assertion suivante : les user controls ne sont pas réutilisables autrement que par copie du code source d’un projet à l’autre. Nous verrons comment, en manipulant les ressources .NET et les custom controls, nous pouvons encapsuler les user control d’une manière qui les rend réutilisables dans un assembly ! Comme exemple-type d’application, nous développerons pour les Windows Share Point Team Services une web part permettant d’inclure un UserControl dans un site Share Point. Le tout en VB, pour changer un peu !". Un article signé Sébastien Bouchet de linkvest. Plusieurs lectures peuvent être nécessaires pour bien comprendre l'astuce de génie qui se cache derrière ...
MAJ : Cet article ayant suscité un vif intérêt, je vous invite à consulter le complément rédigé par Thomas Zumbrunn (encore un nouveau!)
Tout à fait remarquable! Bravo!
Les embedded resources sont effectivement un excellent moyen de déploiement, notamment de fichiers js. C'est de plus une voie pérenne ;)
Les web parts sont aussi une direction intéressante...
Re: Une librarie de UserControl ASP.NET réutilisable ? C'est possible !
par precchia actif 09 Juil 2003 à 09:22 (Profil Utilisateur | Envoyer un message)
Parti sur la même vague que Léon, j'ai implémenté un exemple dont je vous joins des extractions de code :
ivate void Page_Load(object sender, System.EventArgs e)
{
// Load the stream which represents the .ascx document
// TODO : Remove "the Hard Code"
Control parsedControls = Page.ParseControl("Login :Password :");
// Create an Your UserControl instance
// TODO
LoginWebUserControl YourUserControl = new LoginWebUserControl();
// Add the parsed controls at Your UserControl
int countParsedControls = parsedControls.Controls.Count;
for(int i=0; i ..."
// Map them with the controls added dynamicaly previously at Your UserControl
foreach(Control item in YourUserControl.Controls)
{
if(item.ID != null)
{
object [] args = new object [] {item};
try
{
YourUserControl.GetType().InvokeMember(item.ID, System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.NonPublic|System.Reflection.BindingFlags.SetField, null, YourUserControl, args);
}
catch(Exception)
{
}
}
}
// Add Your User Control at the page.
Panel.Controls.Add(YourUserControl);
}
C'est une page ASPX qui au moment de son chargement, s'ajoute dynamiquement un User Control.
Comment vous faire parvenir les sources ? Dés que j'ai trouvé une solution je vous donne un lien.
A la table d'éloges de ASP.NET rajoutons la réflexion.
C'est le premier article technique que j'écris alors ne soyez pas trop dur et bonne lecture et j'attend vos comments ;)
ps : Sami ou Tom si vous trouvez l'article interessant envoyer moi un mail avec les eventuels trucs à changer et je vous le ferai parvenir pour le publier ici pour plus de visibilité.