assembly: TagPrefixAttribute

di Marco Leoncini, in asp.net,

stanchi di vedere il visual studio che, appena trascinate un custom control aggiunge
<%@ Register TagPrefix="cc1" Namespace="......" Assembly="...." %>
, specialmente dopo una serata passata a preparare un nuovo shema xml per estendere l'intellisense ?

partiamo dal principio il VS usa nel codice (C# , VB ecc) la Reflection per estendere l'intellisense, una comodità a cui non sarei mai disposto a rinunciare :) , estrae i medoti propietà ecc e mentre scriviamo, ci da il comodo aiuto di selezionarle dal classico menù a tendina.

la cosa è diversa per le pagine html (.aspx nel nostro caso) il VS non ha modo di ricavare le infomazioni tramite la Reflection, e per aggiungere l'intellisense si appoggia ad uno shema xml (.xsd),

ieri sera (2:30 di notte) stavo aggingendo il supporto per l'intellisense al custom control imageFx di cui sto parlando nell'altra categoria del mio blog, tutto bene faccio il mio schema, copiando porzioni dello schema utilizzato da MS per i conrtrolli predefiniti del VS,.
dichiaro il mio chema nella pagina html

http://schemas.microsoft.com/imagefx">

ma nulla....un attimo e mi accorgi che strascinando il controllo nella pagina il VS aveva messo (giustamente) come TagPrefix cc1 in conflitto con quanto avevo dichiarato nello shema xml :vs:defaultnsprefix="imagefx" .

era la prima volta che aggiungevo tale supporto per un controllo, quandi mi sono messo a rileggere la documentazione del SDK è bastato poco :)

using System;
using System.Web;
using System.Text;
using System.Web.UI;
using System.Drawing;
using System.Drawing.Text;
using System.Web.Caching;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Drawing.Design;

[assembly: TagPrefixAttribute("Soluzioni4D.WebControl","ImageFX")]
namespace Soluzioni4D.WebControl
{.......}

usando l'attributo (nientaltro che l'ìistanza di una classe) assembly: TagPrefixAttribute specifichiamo il namespace di default e il tagprefix che verrà inserito nelle nostre pagine quando trasciniamo un costum control, poi aggiungiamo

[ToolboxData("<{0}:ImageFX runat=server>")]
public class ImageFX : System.Web.UI.WebControls.Image
{...} per il formato del tag e abbiamo finito :)

e tutto funziona che è una meraviglia :)

il alternativa a dichiarare lo shema da utilizzare direttamente nella pagina , basta copiare lo shema xml in una cartella nota al VS, credo quella dove risiedono gli altri chemi ma mi devo documentare era le 3 di notte ed pure il mio cane voleva dormie




Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese