Completata l'agenda della sessione ASP.Net 4 e IE9

11. novembre 2010
Il 16 novembre si terrà un nuovo evento gratuito organizzato da DotDotNet e la SharePointCommunity. Ho finito l'agenda della sessione ASP.Net 4 e Internet Explorer 9 [Prosegue]

.net Framework, ASP.net, C# e VB.net, Visual Studio , , ,

Come visualizzare i messagi di errore del framework in inglese

24. ottobre 2010
Windows 7 supporta i language pack. Per visualizzare i messaggi di errore del framework .net in inglese è necessario rimuovere tutti i language pack non utilizzati. [Prosegue]

.net Framework, ASP.net , ,

Cassini e IIS hanno partorito un figlio: IIS Express

29. giugno 2010
IIS express è il nuovo tool per sviluppare e testare applicazioni ASP.NET in locale. Unisce tutti i vantaggi di Cassini e di IIS [Prosegue]

ASP.net, Visual Studio , , , ,

Evento DotDotNet - Visual Studio Community Tour @ Trentino - Vi parlo di Asp.Net 4.0

19. giugno 2010
DotDotNet in collaborazione con la neonata Umbraco Italia ha organizzato un nuovo evento per Venerdì 2 luglio. E questa volta parlo pure io! [Prosegue]

ASP.net, Visual Studio , , , , ,

DevCon 2009 - Giorno 1

27. maggio 2009
Dopo il corso TDD seguito presso Overnet qualche mese fa, l'annata formativa prosegue con le 3 giornate di DevCon che ogni anno il gruppo di Devleap propone con tutte le novità più recenti o di prossima diffusione di Microsoft nel settore sviluppo ed a seguire una giornata del Basta! Italia on tour. La prima giornata della DevCon 2009 non si è focalizzata su di un singolo aspetto tecnologico ma sugli aspetti architetturali di una applicazione completa a partire dal database su su fino alla UI. Molto fluida la sessione a 4 mani di Rob e Paolo, che in maniera molto affiatata hanno affrontato una intera giornata alternandosi ogni 2-3 minuti circa senza soluzione di continuità. Allo stesso modo hanno mostrato tutta la loro esperienza di speaker passando continuamente da slide a codice e viceversa (peccato per le bizze del proiettore...) La giornata ha avuto come base l'applicazione Estate Management che DevLeap utilizza come strumento formativo fino dalla versione 1 di .Net e ne ha ripercorso l'evoluzione fino ad oggi per poi mostrare le novità applicabili a partire dal Framework 3.5 in poi. Ho trovato molto interessante tutta la parte incentrata sul DAL che ha mostrato come evolvere il data access layer a partire dai recordset arrivando fino a Entity Framework passando attraverso LinqTo2SQL. Questa evoluzione sul DAL è la stessa che ho percorso negli ultimi 5 anni. Tutti temi noti per me quindi ma, dato che la giornata voleva essere di tipo architetturale, è stato interessante vedere dove vengono messe le classi e come vengono strutturati i progetti da chi sviluppa quotidianamente applicazioni enterprise. Ma soprattutto vedere tanti piccoli e grandi accorgimenti utilizzati dal gruppo che sicuramente fanno la qualità di una applicazione. Particolare attenzione è stata posta su come mantenere astratto, isolato e pluggable il DAL per poterlo sostituire semplicemente modificando il file config. Molto belle ed eleganti anche le soluzioni proposte negli ambiti di autenticazione, autorizzazione e validazione dei dati. In questo ambito lo spunto fornito di utilizzare le regole di WF senza utilizzare tutto WF sarà di sicuro oggetto di un mio approfondimento. Meno profiquo è stato il pomeriggio soprattutto nella parte incentrata su SOA e WCF su cui mi sono decisamente perso, probabilmente a causa del mix di stanchezza mia da un lato, di accelerazione degli speaker e di proliferazione esponenziale dei progetti della soluzione (85...) Di sicuro l'applicazione vista oggi rappresenta ad un elevatissimo livello il concetto fondamentale di DISACCOPPIAMENTO ed è una base architetturale che affronta tutti gli aspetti di un applicazione con tutte le tecnologie disponibili fino ad oggi: datareader, linq, linq to sql, entity framework, WF, WCF, Asp.net, MVC, SOA, Ado.Net Data Services...

.net Framework, ASP.net, C# e VB.net, Visual Studio

jQuery datepicker e il controllo validator di Asp.Net

29. aprile 2009
Inserendo il widget DatePicker su una pagina Asp.Net e collegandolo ad una textbox mi sono imbattuto nel seguente errore. Il controllo funziona correttamente in Firefox ma in Internet Explorer viene visualizzato l'errore "'length' is null or not an object" quando si utilizza il calendario. Il problema è legato alla presenza del CompareValidator associato alla textbox. Da quanto ho visto cercando su Google le soluzioni possibili sono 3: Inserire l'evento vuoto onSelect: function() {} (http://code.google.com/p/jquery-datepicker/issues/detail?id=56) Disabilitare i controlli lato client del validator Modificare il codice Javascript del DatePicker (http://www.andrewrowland.com/article/display/ui-datepicker-dotnot-validator-problem) Non le ho verificate tutte e 3 ma io ho utilizzato con successo la prima soluzione perchè volevo comunque mantenere i controlli lato client e men che meno volevo modificare i sorgenti di jquery (per poi scordamelo ad ogni aggiornamento...). Il ticket si trova a questo link http://dev.jqueryui.com/ticket/4071 e sembra che verrà fixato nella versione 1.8 di jquery

ASP.net ,

Listview, Entity framework e navigation property

11. novembre 2008
Stavo creando una semplice ListView utilizzando Entity Framework sulla tabella Clienti. Premetto che la tabella Clienti è in relazione con la tabella Agenti e quindi EF crea correttamente la Navigation Property tra l'entity clienti e l'entity agenti. Creo la ListView, aggiungo il LinqDataSource e faccio il binding tra listview e datasource. Fin qui tutto ok, anche il designer funziona correttamente e mi mostra tutte le colonne. A runtime ricevo invece l'errore: DataBinding: '[Agenti' is not a valid indexed expression. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.ArgumentException: DataBinding: '[Agenti' is not a valid indexed expression. Source Error: Line 230: </td> Line 231: <td> Line 232: <asp:Label ID="Agenti_IDAgenteLabel" runat="server" Line 233: Text='<%# Eval("[Agenti.IDAgente]") %>' /> Line 234: </td> Tramite la navigation il designer ha generato una colonna per mostrarmi l'ID dell'agente collegato al cliente. Il problema è nelle parentesi quadre che sono state aggiunte all'interno del metodo Eval. Modificato il tag rimuovendo le parentesi quadrate Text='<%# Eval("Agenti.IDAgente") %>' /> tutto funziona correttamente

ASP.net, C# e VB.net, Visual Studio , ,

Evitare la duplicazione di InsertItemTemplate e EditItemTemplate nel controllo FormView

28. maggio 2008
Il controllo FormView è uno dei controlli più utilizzati nelle pagine Asp.Net in quanto rappresenta l'interfaccia per i metodi di Insert, Update e Select sul database. Una cosa che ho subito trovato noiosa è il fatto che i template di Insert e di Edit sono praticamente uguali al 99% e ci vuole molto tempo per duplicarli e manutenerli (come al solito la ridondanza non paga). Anche se Visual Studio genera in automatico un primo template facilmente modificabile resta comunque molto gravoso lo sforzo per inserire e modificare tutti i controlli di validazione, dare i nomi giusti ai controlli ed eventualmente aggiungere altre proprietà. Sul forum Asp.Net ho trovato una soluzione molto elegante ed efficace (vedi "FormView: InsertItemTemplate and EditItemTemplate? Why do I need the same code twice?"). In pratica se si elimina completamente l'InsertItemTemplate viene utilizzato in automatico l'EditItemTemplate sia per l'inserimento che per la modifica. Per essere completa la soluzione deve integrare anche il suggerimento di questo post:  "Reuse code for EditTemplate & InsertTemplate of FormView" Dato che i linkbutton Insert e Update devono inviare due diversi comandi a seconda dello stato della formview in fase di Databinding della formview è necessario inserire nell'EditItemTemplate i linkbutton di Insert e Update e abilitarli/disabilitarli di conseguenza: protected void FormView1_DataBound(object sender, EventArgs e) {     if (FormView1.CurrentMode == FormViewMode.Edit)     {         LinkButton InsertButton =             FormView1.FindControl("InsertButton") as LinkButton;         LinkButton UpdateButton =             FormView1.FindControl("UpdateButton") as LinkButton;           InsertButton.Visible = false;         UpdateButton.Visible = true;     }     else if (FormView1.CurrentMode == FormViewMode.Insert)     {         LinkButton InsertButton =             FormView1.FindControl("InsertButton") as LinkButton;         LinkButton UpdateButton =             FormView1.FindControl("UpdateButton") as LinkButton;           InsertButton.Visible = true;         UpdateButton.Visible = false;     } } In questa fase è possibile gestire anche eventuali altre differenze che potessero esserci tra i due template.

.net Framework, ASP.net, Visual Studio