Introduzione ad ASP.NET 3.5: novità e caratteristiche

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Nuovi controlli per l'accesso ai dati

La versione 3.5 include inoltre 2 controlli specifici per l'accesso ai dati, chiamati ListView e DataPager, che vanno idealmente ad integrare quanto già disponibile con i Data Control della versione 2.0, che sono DetailsView, GridView, FormView, e quelli disponibili sin dalla versione 1.0, cioè DataGrid, DataList e Repeater, che ovviamente restano ancora utilizzabili.

ListView è un misto tra il Repeater ed il DataList, in grado di supportare scenari dove si vuole avere il massimo controllo dell'output, ma anche tutti i tipi di template supportati da GridView, DetailsView e FormView. È insomma un po' il data control definitivo, quello che potenzialmente può sostituire tutti gli altri: consente di visualizzare più di un elemento per volta, potendo controllare al 100% il layout di ogni singola ripetizione, suddividendo gli elementi in verticale, orizzontale, ripetendone più di uno per riga e supportando varianti ed incroci di tutte queste possibilità.

Così come gli altri Data Control, anche ListView supporta i DataSource Control, potendo quindi integrarsi alla perfezione con questi ultimi, incluso ovviamente l'ultimo nato, il LinqDataSource.

DataPager invece rappresenta un controllo specifico per la paginazione, che consente di collegare il controllo che si vuole paginare, semplicemente agendo sulla proprietà PagedControlID, specificando il numero di elementi per pagina attraverso la proprietà PageSize.

<asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1" QueryStringField="p">
    <Fields>
        <asp:NextPreviousPagerField FirstPageText="Avanti" ShowFirstPageButton="True"
            ShowNextPageButton="False" ShowPreviousPageButton="False" />
        <asp:NumericPagerField />
        <asp:NextPreviousPagerField ShowLastPageButton="True"
            ShowNextPageButton="False" ShowPreviousPageButton="False" />
    </Fields>
</asp:DataPager>

È possibile influenzarne la formattazione inserendo all'interno della collection Fields i campi che si vogliono visualizzare, con le relative proprietà. E' interessante sottolineare come, specificando un valore per la proprietà QueryStringField, il controllo a cui viene collegato (nella 3.5 è possibile usare in maniera diretta solo il controllo ListView) verrà paginato utilizzando un nuovo link, anzichè generando un PostBack, così che possa essere sfruttato per una migliore indicizzazione da parte dei motori di ricerca.

Perchè eventuali controlli custom possano sfruttare il DataPager è necessario implementare l'interfaccia IPageableItemContainer, che attraverso un evento, un metodo e due proprietà consente di notificare il controllo stesso sul numero di pagine disponibili ed i record totali. Se non si ha già un controllo di tipi pager a disposizione può essere una buona scelta nell'ottica di sfruttare un componente già disponibile, evitando di scriverne uno con le stesse funzionalità.

In estrema sintesi, questo controllo se utilizzato con un LinqDataSource è in grado di sfruttare le funzionalità di Skip() e Take() di LINQ per recuperare solo ed esclusivamente il numero di record che sono necessari. Questo si traduce, se abbinato a LINQ To SQL, che funziona con SQL Server, nella capacità di ottimizzare la query ed evitare inutili sprechi necessari a caricare l'intero set di dati, per poi visualizzarne solamente quelli della pagina selezionata. In parole povere, l'engine di LINQ To SQL genera una query che estrae effettivamente i record necessari ad essere visualizzati nella pagina corrente, con un grandissimo risparmio in termini di carico e banda per SQL Server.

Nuove funzionalità per AJAX e Javascript

AJAX è ormai entrato a far parte delle applicazioni, tanto che l'hype generato qualche anno fa sembra ormai passato e l'uso di tecniche di aggiornamento parziale delle pagine sono ormai una caratteristica intrinseca a molte applicazioni, più che una semplice necessità dettata dalla moda.

ASP.NET 3.5 in effetti porta in dote la novità di consentire un'integrazione diretta con le ASP.NET AJAX Extensions, che ora sono disponibili in versione 3.5 e che non occorre installare in maniera separata.

Da questo punto di vista la novità principale è nel supporto delle WebPart all'interno di un UpdatePanel, che ora sono finalmente compatibili e consentono di utilizzare le poco note Personalization API, che sono presenti sin dalla versione 2.0 e consentono di lavorare con un engine di persistenza che sfrutta il Provider Model, e offre dunque la possibilità di una estrema personalizzazione, che nel caso delle WebPart si traduce nella capacità di ricordare il layout e le impostazioni delle varie aree, qualora l'utente sia autenticato, sulla falsa riga di quanto avviene utilizzanto Sharepoint.

Sul fronte AJAX spicca poi il supporto per Membership, Roles e Profile API, con la assoluta comparsa del supporto per Roles ed il miglioramento degli altri due servizi già esistenti, che in realtà si incastrano all'interno di un lavoro ben più sistematico per quanto riguarda stabilità e bug fixing delle estensioni AJAX.

Continuando su questo argomento, si nota subito dopo il primo periodo di utilizzo il supporto per l'Intellisense sul codice Javascript, con tanto di supporto per la type inference, ovvero la capacità di ricavare il tipo effettivamente utilizzato, anche se Javascript non prevede un meccanismo di tipizzazione, proponendo l'autocomplete in funzione della tipologia di oggetto che si sta utilizzando.

Molto atteso anche il supporto per JSON all'interno di servizi WCF o ASMX, con un apposito tipo di template già pronti, che si occupano della maggior parte del lavoro di configurazione, registrando l'entry point all'interno del web.config e necessitando della stessa operazione solo all'interno dell'UpdatePanel. Con una hotfix, poi, viene anche aggiunto un miglior supprto a JQuery.

Supporto per i Control Extender

Una delle novità più utili è l'aggiunta nell'interfaccia di VS 2008 del supporto per i Control Extender. Introdotti con la prima versione dell'AJAX Control Toolkit, sono un particolare tipo di controlli che hanno la funzione di estendere quelli già disponibili, senza che sia necessario cambiare il controllo stesso, così da essere facilmente aggiunti a quanto realizzato, aggiungendo caratteristiche di contorno.

Il supporto a questa modalità di sviluppo è particolare utile quando si utilizza AJAX, ma è chiaro che può essere facilmente estesa a qualsiasi genere di controllo, aprendo scenari molto interessanti.

Per testare questa funzionalità le strade sono essenzialmente due: si procede con la creazione di un Control Extender, oppure si registrano nella ToolBox i controlli dell'AJAX Toolkit, trascinandone l'assembly, così da avere a disposizione i relativi controlli.

A questo punto è sufficiente inserire una Textbox nella pagina per ottenere uno smart task che guida alla selezione dell'extender che si preferisce:

Accanto alla dichiarazione della Textbox viene quindi aggiunto un controllo che vi fa riferimento, con il seguente markup:

<asp:textbox ID="Password" runat="server" OnTextChanged="x_TextChanged" />
<AjaxToolkit:PasswordStrength ID="Password_PasswordStrength" runat="server"
    Enabled="True" TargetControlID="Password" />

L'effetto nel browser è quello di aggiungere questo comportamento al controllo.

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC