Sto utilizzando il plug-in di calendario completo di Jquery e voglio poter fare clic su un evento e i dettagli dell'evento da compilare tramite AJAX in un div con l'id di #dettagli.jQuery.Load() non attiva Request.IsAjaxRequest in ASP.NET MVC2
Ecco l'azione del mio controller che sto tentando di caricare. Quando esegue il debug, l'azione non considera la richiesta in ingresso come AJAX e restituisce la vista completa anziché quella parziale. Importa se la vista completa è chiamata la stessa vista parziale? Vale a dire; 'Details.aspx' & 'Details.ascx'?
public ActionResult Details(int id)
{
Pol_Event pol_Event = eventRepo.GetEvent(id);
ViewData["EventTypes"] = et.GetEventType(id);
if (pol_Event == null)
return View("NotFound");
else
{
if(HttpContext.Request.IsAjaxRequest()){
return PartialView("Details");
}
else
return View(pol_Event);
}
}
Ecco il codice jquery che sto utilizzando. Mi manca di non usare .load() correttamente nella funzione eventClick? Lo sviluppatore del plugin per il calendario ha confermato che eventClick non ha nulla a che fare con AJAX, quindi l'errore deve trovarsi nel mio codice.
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
events: "/Events/CalendarData",
allDayDefault: false,
selectable: true,
eventClick: function(event) {
$('details').load(event.url);
},
eventRender: function(event, element) {
element.qtip({
content: event.title + " @ " + event.venue,
position: {
corner: {
target: 'topLeft',
tooltip: 'bottomLeft'
}
}
});
}
});
});
Così sto utilizzando la funzione Jquery.Load() in modo non corretto, o c'è qualcosa di sbagliato con il mio controller?
Altri aggiornamenti: ho finalmente capito il problema. XMLHttpRequest è stato inviato, ma sto riscontrando un errore del server interno 500, non risolto, in quanto non riesco a capire quale sia la causa dell'errore.
Host: localhost:4296
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722
Firefox/3.6.8
Accept: text/html, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
X-Requested-With: XMLHttpRequest
Referer: http://localhost:4296/Events/EventCalendar
Cookie: .ASPXAUTH=56C5F4FD536564FF684F3F00E9FB51A5F2F1B22D566C517923D71FEAF599D266531CAC52BF49D2700E048DD420A4575456855303CC2DCB5875D4E1AD8883821EA62E5169969503776C78EB3685DAA48C
AGGIORNAMENTO: ho finalmente capito qual era il problema. Non passavo nel modello per il parziale modo che la linea
return PartialView("Details");
caso sono stati
return PartialView("Details", pol_Event);
questo generava l'errore interno del servizio 500.
riassume come funziona IsAjaxRequest(): http://bit.ly/bXq32v – BritishDeveloper