jeudi 27 septembre 2007 11:37
Aurelien
[WebControls] - WebServiceUrlEditor
Le développement de WebControls ou de Contrôles Ajax ne se limite pas à du rendu HTML, il ne faut en aucun cas oublier leurs intégrations au sein de l'environnement Visual Studio. Il est donc primordial d'offrir à l'utilisateur tous les outils qui lui faciliteront l'intégration et l'utilisation de nos WebControls.
Après cette courte introduction, prenons un cas précis. Travaillant actuellement beaucoup autour des contrôles Ajax, il m'arrive de plus en plus souvent d'implémenter la notion de ServicePath / ServiceMethod sur mes contrôles. Pour rappel, ces propriétés permettrons à mon contrôle Ajax d'appeler une méthode de WebService afin de faire un quelconque traitement. Ces méthodes sont vraiment intéressantes, mais rien n'est mis à notre disposition pour intégrer de façon optimale la propriété ServicePath.
Effectivement, le screenshot suivant vous montre qu'il n'existe pas d'éditeur afin de sélectionner l'url de notre WebService au sein de notre projet.
Ceci nous oblige donc à saisir l'url de notre WebService, ce qui n'est pas des plus optimale en terme d'intégration au sein de Visual Studio.
Il existe cependant une solution permettant d'associer un éditeur à cette propriété, mais il n'existe aucun éditeur pour les WebServices. Aucun problème, voici comment implémenter votre propre éditeur afin de proposer une interface de sélection à l'utilisateur.
Tout éditeur d'url de la plateforme .Net hérite de la classe System.Web.UI.Design.UrlEditor, par exemple System.Web.UI.Design.ImageUrlEditor, nous allons donc ici créer un WebServiceUrlEditor qui nous permettras d'obtenir une interface de sélection.
Pour ceci, nous hériterons de System.Web.UI.Design.UrlEditor et nous allons surcharger les propriétés Caption et Filter.
La propriété Caption permettant de définir le titre du formulaire de sélection, Filter permettant de filtrer les fichiers qui apparaîteront dans ce dernier.
Voici donc mon implémentation de Wygwam.Design.WebServiceUrlEditor :
using System.Web.UI.Design;
namespace Wygwam.Design
{
public class WebServiceUrlEditor : UrlEditor
{
protected override string Caption
{
get
{
return "Sélectionner un WebService";
}
}
protected override string Filter
{
get
{
return "WebServices (*.asmx)|*.asmx|All files (*.*)|*.*|";
}
}
}
}
Une fois cette implémentation effectuée, nous n'avons plus qu'a renseigner l'attribut Editor au niveau de notre contrôle :
[UrlProperty]
[ExtenderControlProperty]
[TypeConverter(typeof(ServicePathConverter))]
[ClientPropertyName("servicePath")]
[Editor(typeof(Wygwam.Design.WebServiceUrlEditor),
typeof(System.Drawing.Design.UITypeEditor))]
public virtual string ServicePath
{
get { return (string)(ViewState["ServicePath"] ?? string.Empty); }
set { ViewState["ServicePath"] = value; }
}
Au dela des attributs habituels de la méthode ServicePath, nous venons d'ajouter l'attribut qui permettra à Visual Studio d'afficher notre propre éditeur.
Voici donc le résultat de l'intégration de notre éditeur au sein de Visual Studio :
Lorsque l'on voit que l'implémentation d'un tel éditeur ne prends que quelques lignes de code, il serait dommage de ne pas en profiter pour simplifier l'utilisation de nos WebControls.
Aurelien
Member of WygTeam
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :