Attributi e Validazione del querystrig

di Stefano Mostarda, in .Net 2.0,

Ultimamente sto lavorando parecchio con gli attributi perchè li trovo estremamente più comodi di un'interfaccia o di una proprietà.

Detto questo, una delle esigenze più comuni è quella di validare il querystring per verificare che i dati siano tutti presenti e corretti. Scrivere ogni volta il codice di controllo mi risulta tedioso e anche affidarmi ad un file di configurazione e ad un metodo di helper per generalizzare il compito mi risulta poco efficace all'atto pratico perchè per capire la validazione devo consultare un secondo file. Alla fine gli attributi mi sono tornati utili anche qui: si decora la classe della pagina con un attributo custom (ad esempio RequiredQueryStringField) passando in input il nome del campo del querystring da validare. Nell'evento Page_Load chiamo un metodo di helper che scorre gli attributi della classe e mi valida il querystring. Se poi la chiamata la metto in una classe base da cui tutte le pagine derivano ecco che il codice si annulla e ci si deve preoccupare solo di inserire gli atributi.
Risultato: Querystring validato, codice pulito e leggibile, niente file esterni.

In realtà ho pensato anche un HttpModule che scatena la validazione prima dell'esecuzione della pagina, ma poichè voglio permettere anche una validazione custom, un po' alla CustomValidator per capirci, devo ancora pensarci bene.

[RequiredQueryStringField("id")]
public class MyPage : Page{
  private void Page_Load(object sender, EventArgs e){
            Helper.Validate(this)
  }
}


con questo snippet mi assicuro che il valore della chiave "id" nel querystring sia presente. Comodo no ;).

P.S. Appena avrò fatto chiarezza sull'HttpModule vedrete tutto pubblicato sul lab.

Stay tuned...

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