Programmare con ASP.NET e le Ajax extensions

Microsoft ci dedica gli Innovation Days, una serie di incontri ideati per offrirci risorse tecniche e strumenti di business …

Per chi ne ha voglia (previa registrazione), il 19 febbraio 2007, presso il Warner Village Le Fornaci di viale Giovanni Falcone ( Beinasco TO ) c’è il primo incontro:

Programmare per il web con ASP.NET e le Ajax extensions.

Riporta la descrizione presa sul sito Microzoz

ASP.NET 2.0 è attualmente il framework più completo e potente per sviluppare in tempi rapidi applicazioni e siti web ricchi di funzionalità, affidabili, flessibili e scalabili. Caratteristiche quali master page, web part, membership, profili, data binding bidirezionale, temi e skin, localizzazione, configurazione basata su XML, code separation – nonché una perfetta integrazione con tutte le recenti tecnologie di sviluppo Microsoft — ne fanno lo strumento ideale per sviluppare sia il tipico sito web o di commercio elettronico, sia complesse applicazioni Intranet di classe Enterprise.

Questo seminario fornirà esempi pratici per una gran parte delle caratteristiche essenziali del framework, non mancando di introdurre anche concetti legati all’esposizione di software come servizio e ASP.NET AJAX, l’ultima aggiunta alla famiglia di tecnologie per il web di casa Microsoft, per l’implementazione di operazioni avanzate client-side e cross-browser.

Il docente è Marco Bellinaso e la partecipazione è gratuita.

Io penso di andare, se qualcuno vuole farmi compagnia …

Usare HttpContext fuori da una pagina aspx

Ereditati dal buon vecchio ASP ( Active Server Page ) gli oggetti Server , Response e Request sono stati ulteriormente implementati dal .Net Framework.

Da un pagina .aspx, sono infatti disponibili metodi come Response.Write, Request.QueryString, Server.UrlEncode e tanti altri, ma nel caso li volessimo utilizzare da una nostra classe dobbiamo ricorrere all’aggetto HttpContext.

Questo oggetto infatti incapsula tra le altre cose gli oggetti di cui sopra, ma ci permette di contestualizzarli relativamente alla pagina richiesta.

Qui un esempio per l’oggetto Response

Web.HttpContext.Current.Response.Write(‘prova response.write’)

Scrivere tutta questa roba però può essere un pò scomodo, quindi personalmente preferisco dichiararli e usarli direttamente.

[snippet=1960]

Nell’esempio richiamo un metodo “shared” da un una classe esterna per stamparmi l’elenco delle dei parametri passati come QueryString ( nomepagina.aspx?a=1&b=2&c=3 ).

Note a fondo pagina:
Quando scritto è frutto di alcuni miei esperimenti empirici, se qualcuno conosce metodi più eleganti e vuole condividerli è il benvenuto.

Categorie
featured sviluppo

UrlRewrite con ASP.NET

Per chi cerca di progettare siti prestando attenzione ai fondamenti SEO sa quanto è importante avere delle pagine il cui nome racchiude keywords significative.

Quando però la complessità dei siti aumenta, e risulta necessario strutturare le informazioni, è impensabile pensare di creare manualmente tutte le pagine.

Ci si trova quindi a selezionare dal nostro database una porzione di dati con una sitassi simile a questa.

www.nomesito.ext/nomepagina.php?id=123

In questi casi ci viene in aiuto Apache, che grazie a mod-rewrite ed al nostro fido .htaccess ci permette di fare piccole magie, trasformando il link in qualcosa di più sensato, mantenendo comunque inalterata la dinamicità del pagina.

www.nomesito.ext/pagina-che-parla-di-keywords/

Questo, ai motori di ricerca piace un casino …

Categorie
sviluppo

MySQLDriverCS e System.Byte[]

Oggi ho scoperto che usando questi driver per la connessione ad un database MySQL all’interno di una pagina .aspx, nel caso di una SELECT su campo di tipo Text , TintText , MediumText o LongText invece di restituire una stringa restituiscono un insieme di byte.

Se si utilizza un DataReader è possibile convertire in stringa utilizzando il metodo GetString ( credo messo a disposizione proprio per questo) , che però accetta come argomento solo l’indice del campo.
Nel caso volessimo utilizzare il nome del campo possiamo ricorrere ad un altro metodo GetOrdinal, che ci restituisce un integer con l’indice della posizione del campo. ( fonte )

DataReader.GetString(DataReader.GetOrdinal(“NomeCampo”))

Inizialmente l’ho interpretato come un errore del driver ma in realtà ho imparato che MySQL internamente tratta questi campi come array di byte, e quindi, anche se non condivido la scelta dello sviluppatore, si è scelto di restituire lo stesso tipo.

I problemi si complicano se voglio lavorare con un DataTable preparato da un DataAdapter, infatti, anche se internamente viene usato un DataReader, le righe non vengono generate correttamente.

Dopo diverse ricerche, numerosi tentativi falliti e dopo qualche capocciata, ho deciso di aggirare il problema cambiando semplicemente i driver usati per la connessione e passando quindi all’utilizzo dei Connector/Net sviluppati direttamente da MySQL AB.

Fortunatamente le modifiche sono state minime essendo i nomi dei metodi praticamente identici.
In pratica ho sostituito le chiamate a MySQLDriverCS trasformandole in MySql.Data.MySqlClient ed ho cambiato il formato della stringa per la connessione.