Siti in AJAX indicizzabili sui motori di ricera

by Andrea 25 May 2007 11:05

SEO Uno dei problemi di AJAX (nel suo uso normale) è di non rendere visibili i contenuti caricati in un postback asincrono ai motori di ricerca. Questo perchè gli spider non riescono a navigare i link javascript.
Quando questo tipo di contenuti (caricati in un postback) è enorme, inizia ad essere un gorsso problema per la visibilità nei motori di ricerca.

In "ASP.NET Futures CTP" è stato inserita una feauture per risolvere questa problematica. Si tratta di una Search Sitemaps, in pratica, una sitemap creata per risolvere il problema delle pagine create dinamicamente.
Vi giro alcuni link della documentazione (provvisoria):
http://quickstarts.asp.net/Futures/services/doc/enablingsearch.aspx
http://quickstarts.asp.net/Futures/services/doc/searchsitemaps.aspx

Tramite un file di configurzione, e un pò di codice, sarà quindi possibile far generare una sitemap che conterrà anche le pagine raggiungibili attrverso un url dinamico.
Utilizzando questa Search Sitemap sarà quindi possibile rendere visibili agli spider dei search engine i nostri contenuti caricati in AJAX.

Ecco alcuni post che trattano di questo argomento:
Searching enabling Silverlight and AJAX web applications 
SEO for Ajax and Silverlight Applications
XD003 - AJAX Patterns with ASP.NET

Fonte:
Search engine optimization for Silverlight and Ajax

Technorati tags: , ,

Tags:

ASP.NET AJAX

ReorderList "failed to reorder"

by Andrea 24 April 2007 13:04

Se state usando il controllo ReorderList con un'ObjectDataSource e dopo aver riordinato un item vi compare questo errore

 See error below: /r/r/n/r Failed to Reorder

nella maggior parte dei casi il problema stà nella differenza/mancanza di alcuni argomenti nel metodo di Update, e per scoprirlo sono proprio diventato matto.

Se volete vedere l'errore preciso (non ho trovato di meglio) il consiglio che vi dò, è di compilare in debug la libreria di AJAX Control Toolkit, sostituirla temporaneamente a quella che stavate usando, e porre un breakpoint alla riga dove trovate "throw new Exception("Failed to reorder.", ex);" che nella versione 1.0 stà nel file ReorderList.cs alla riga 1172 e vedere in debug qual'è l'eccezione esatta.

Tags:

ASP.NET AJAX

Interrompere un AsyncPostBack

by Andrea 17 April 2007 15:04

In casi di operazioni lunghe fatte in PostBack asincrono (AsyncPostBack), può capitare di dare la possibilità all'utente di interrompere tale operazione, e ci viene in aiuto il metodo abortPostBack messo a disposizione dal PageRequestManager.

Per poterlo utilizzare, è sufficiente richiamare questa funzione da un pulsante che possiamo inserire all'interno del ProgressTemplate:

function CancelAsyncPostBack()
{
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    if(prm.get_isInAsyncPostBack())
		prm.abortPostBack();
}

Tags:

ASP.NET AJAX

Meeting ASP.NET AJAX 1.0

by Andrea 13 April 2007 14:04

Per chi non fosse capitato nel sito di XeDotNet, voglio segnalare che il 29 giugno 2007 io e Davide Vernole (o se volete, Davide Vernole e io) terremo un meeting su ASP .NET AJAX 1.0.

ASP.NET AJAX 1.0 promette una nuova user experience per le vostre applicazioni web. Ci immergeremo in questo nuovo framework per capirne le caratteristiche principali dalla sua architettura per arrivare alla sua estendibilità.

Manca ancora un bel pò di tempo, ma vi consiglio di segnarlo in agenda.
Il meeting sarà veramente interessante, si inizierà dalla basi per poi passare a trattare AJAX Control Toolkit, AJAX e i Web Services... e ovviamente porterò anche il mio trigger per l'UpdatePanel. smile_wink

Visto che manca ancora un pò, se avete qualche caso/problema che vorreste venisse trattato, potete lasciare qui un commento oppure contattarmi, e vedrò di sbatterci un pò la testa e magari al meeting vedrete anche quel codice. smile_teeth

Vi avviserò appena saranno aperte le iscrizioni.
UPDATE del 18/03/2007: per ler iscrizioni clicca qui

Vi consiglio inoltre di seguire i Webcast tenuti da Davide Vernole proprio su ASP .NET AJAX, che potete trovare qui: Percorso formativo ASP.NET AJAX

N.B.: La data del meeting è stata spostata a venerdì 29 giugno (al posto del 22 giugno) a causa della sovrapposizione con i Community Days.

Tags:

ASP.NET AJAX | XeDotNet

Demo del trigger su evento JavaScript

by Andrea 02 April 2007 14:04
Ho pubblicato a questo indirizzo http://ajax.dottor.net/sample/jstrigger/ un esempio di utilizzo a scopo di test del trigger su evento JavaScript. So bene che in questo caso si sarebbe potuto fare il tutto semplicemente con JavaScript, ma a me serviva come dimostrazione/possibilità d'uso di questo trigger. Infatti in questo caso il trigger si aggancia all'evento KeyUp e Change della TextBox. Nell'evento KeyUp, faccio uso di una funzione (potrebbe essere una validazione) che mi faccia scatenare l'aggiornamento dell'UpdatePanel ogni tre caratteri inseriti.

Technorati tags: , , ,

Tags:

ASP.NET AJAX

Sapere quando siamo in AsyncPostBack

by Andrea 28 March 2007 11:03

A volte le cose sono più semplici del previsto. Fino ad ieri quando usavo ASP .NET Ajax, mi limatavo a controllare solamente che la pagina fosse in PostBack (Page.IsPostBack) per compiere determinate azioni

protected void Page_Load(object sender, EventArgs e)
{
	if (!Page.IsPostBack)
	{
		...
	}
}

e non ero a coonoscenza che ci è stata messa a disposizione una proprietà che ci permette di conoscere quando ci troviamo in un AsyncPostBack, e questa proprietà si trova nello ScriptManager (IsInAsyncPostBack).
Il vantaggio ora è che si possono separare le azioni da compiere (ad esempio al caricamento di una pagina).

protected void Page_Load(object sender, EventArgs e)
{
	if (!Page.IsPostBack)
	{
		// eseguo un'azione al primo caricamento della pagina
	}

	if (ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack)
	{ 
		// eseguo un'azione quando sono in un AsyncPostBack
	}
}

Technorati tags: ,

Tags:

ASP.NET AJAX

Aggiornato il codice del JSAsyncPostBackTrigger

by Andrea 27 March 2007 15:03

Sono riuscito a risolvere il problema del trigger, che non poteva essere aggiunto dinamicamente durante un PostBack, e questo mi rende felice perchè non era un problema da poco. smile_party

Ho aggiornato i file in download , e li trovate nel solito post:
UpdatePanel e trigger su evento JavaScript - JSAsyncPostBackTrigger

Buon divertimento

Tags:

ASP.NET AJAX

UpdatePanel e trigger su evento JavaScript - JSAsyncPostBackTrigger

by Andrea 26 March 2007 13:03

Come accennavo nel post precedente, a volte capita di voler aggiornare il contenuto di un UpdatePanel tramite un evento JavaScript. Il non poter fare questa cosa un pò mi rodeva, e allora ho cercato una soluzione e, applicando alcuni workaround, sono riuscito a creare un tipo di trigger per l'UpdatePanel che fa scatenare l'update agganciandosi ad un preciso evento JavaScript.

Come usarlo:
Questo trigger va aggiunto alla collezione dei trigger come lo si fa per i due tipi di trigger esistenti (AsyncPostBackTrigger, PostBackTrigger ):

[...]
    </ContentTemplate>
     <Triggers>
         <asp:JSAsyncPostBackTrigger
                 ControlID="txtText"
                 EventName="keyup"
                 ClientFunction="validation" />
         <asp:JSAsyncPostBackTrigger
                 ControlID="txtText"
                 EventName="change" />
     </Triggers>
 </asp:UpdatePanel>
Nel trigger vanno specificati, l'ID del controllo (ControlID) che scatena l'evento, il nome dell'evento JavaScript (EventName) che farà scatenare l'Update, e facoltativamente, il nome di una funzione JavaScript per la validazione (ClientFunction) che ho visto che spesso può tornare utile. Quest'ultima può valutare se far scatenare o no il trigger, e per fare ciò è sufficiente impostare un flag (args.IsValid) a true per fare scatenare l'update, o a false per annullare il trigger. Questa funzione può essere usata anche per eseguire del codice JavaScript prima dell'update del UpdatePanel. 
Eccone un esempio:
function validation(args) {
    if (($get('txtText').value.length % 3) == 0)
    {
        args.IsValid = true;
    }
    else
     {
        args.IsValid = false;
    }
}

Per poter usare il tutto, si deve referenziare la dll ed il trigger va registrato nella pagina nel seguente modo:
<%@ Register Assembly="XeDotNet.Dottor.Web.UI" Namespace="XeDotNet.Dottor.Web.UI" TagPrefix="asp" %>
oppure nel Web.Cofig all'interno del blocco pages:
<add Register Assembly="XeDotNet.Dottor.Web.UI" Namespace="XeDotNet.Dottor.Web.UI" TagPrefix="asp" />

Problemi conosciuti:
Questo tipo di trigger è ancora allo stato embrionale, infatti al momento ha il difetto di non poter venire aggiunto dinamicamente durante un PostBack, ma conto di risolvere questo punto al più presto. (UPDATE del 27.03.2007 - problema risolto) Attenzione a quali eventi agganciate al trigger per evitare un numero tropppo elevato di PostBack.

Compatibilità:
Il trigger dovrebbe essere cross-browser in quanto fa uso della ASP .NET AJAX library (che è cross-browser).

Download:
(ultimo aggiornamento dei file in download: 30.03.2007) Ecco il link per il download della dll ed ecco il link con il download del codice sorgente ed un esempio d'uso.

Feedback:
Vi chiedo solamente di lasciare un vostro commento/impressione per avere alcuni feedback e sapere se approfondire il trigger in questione (e se può servire realmente a qualcuno all'infuori di me).

Thanks smile_wink

Technorati tags: , , ,

Tags:

ASP.NET AJAX

ASP .NET AJAX e i tipi di trigger dell'UpdatePanel

by Andrea 26 March 2007 08:03

Per chi usa con una certa costanza ASP .NET AJAX, e più in dettaglio l'UpdatePanel, credo senta la mancanza di alcuni trigger.

I trigger presenti ad oggi sono due, l'AsyncPostBackTrigger e il PostBackTrigger.
Il primo (AsyncPostBackTrigger) permette di aggiornare il contenuto dell'UpdatePanel specificando il controllo e l'evento che causerà questo trigger. Il controllo può essere sia tra quelli contenuti all'interno dell'UpdatePanel, che tra quelli esterni.
Il PostBackTrigger permette di specificare un controllo interno all'UpdatePanel che causerà un postback della pagina.

Questi trigger coprono la maggior parte dei casi, ma alcune volte ci si presenta la necessità di dover aggiornare il contenuto di un UpdatePanel via Javascript...

...al prossimo post per una possibile soluzione... smile_teeth

Technorati tags: , ,

Tags:

ASP.NET AJAX

ASP .NET AJAX e registrazione javascript

by Andrea 23 March 2007 00:03

Nel normale uso di ASP .NET AJAX, usando gli UpdatePanel può capitare di dover iniettare uno script magari dopo un postback, e la cosa che viene naturale è di usare il solito Page.ClientScript:

this.Page.ClientScript.RegisterStartupScript(...);

ma noterete che non funzionerà (e non genererà nemmeno un errore) perchè lo script viene iniettato in un punto della pagina esterno all'UpdatePanel e quindi non verrà eseguito perchè verrà aggiornato solo il contenuto dell'UpdatePanel.
In questo caso, si devono iniettare gli script passando per lo ScriptManager inserito nella pagina e registrando gli script nel seguente modo:

ScriptManager.RegisterStartupScript(....);

E' certamente una cosa banale, ma per chi è alle prime armi con ASP .NET AJAX sicuramente farà perdere un pò di tempo. smile_wink

A questo link della documentazione troverete maggiori info a riguardo.

Technorati tags: , , , ,

Tags:

ASP.NET AJAX