Come riconoscere una chiamata Ajax in ASP.NET

Scritto da  Giorgio Di Nardo il domenica 23 gennaio 2011  •  Linguaggio: C#   • Livello: 100


Nonostante il nome molto incoraggiante, la proprietà IsAsync della classe Page non fornisce un aiuto in materia.

Il problema può invece essere risolto analizzando la collezione degli Headers della Request associata al HttpContext corrente.

L'header in questione è in particolare quello contrassegnato dalla chiave X-Requested-With che viene impostato a XMLHttpRequest nel caso di richieste Ajax.

In un normale Web Form (.aspx) che eredita da System.Web.UI.Page è quindi possibile utilizzare indifferentemente la sintassi:

protected void Page_Load(object sender, EventArgs e)
{
if (Request.Headers["X-Requested-With"] == "XMLHttpRequest")
{
[...]
}
}

o quella:

protected void Page_Load(object sender, EventArgs e)
{
if (HttpContext.Current.Request.Headers["X-Requested-With"] == "XMLHttpRequest")
{
[...]
}
}

 

mentre in un Generic Handler (.ashx)  che eredita da IHttpHandler è possibile usare la sintassi:

public void ProcessRequest(HttpContext context)
{
if (context.Request.Headers["X-Requested-With"] == "XMLHttpRequest")
{
[...]
}
}


Tags: ASP.NET,Ajax

 
x