2010-08-16 4 views
0

Je travaille un site dans ASP.NET MVC où l'utilisateur est présenté avec un calendrier, et en cliquant sur une date de calendrier particulier fait apparaître la fonction suivante:Comment utiliser AJAX Post pour appeler l'action ASP.NET MVC Controller et retourner une nouvelle vue?

function selectHandler(event, data) { 
      var myRequest = new Request.HTML({ 
       url: '/Calendar/EventList', 
       method: 'post', 
       data: { datedata: data.toString() }, 
       update: $('postback'), 
      }).send(); 
     }; 

J'utilise les classes MooTools AJAX pour appeler mon action Controller/Calendrier/EventList, illustré ci-dessous:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult EventList(string datedata) 
    { 

       CalendarViewData viewData = new CalendarViewData 
       { EventList = GetEventsList(datedata) }; 

       return View(viewData); 
    } 

je peux mettre un point d'arrêt dans l'action EventList, et voir qu'il retourne la vue, mais le navigateur reste sur la première page, et réoriente jamais au page renvoyée par cette action EventList.

Je suppose que je dois ajouter plus à ma fonction JavaScript, mais je ne sais pas quoi. Des idées?

Répondre

1

Pourquoi la redirection du navigateur? Vous envoyez une requête AJAX à une action du contrôleur qui renvoie une vue (c'est probablement faux, vous devrez peut-être retourner une vue partielle) qui est ensuite utilisée pour mettre à jour un élément dans le DOM. Si vous voulez rediriger vous pouvez utiliser une simple balise d'ancrage (ou un form si vous avez besoin de POST), pas besoin d'utiliser javascript.

+0

Merci, mes connaissances AJAX sont limitées. J'ai fini par pointer le navigateur vers/Calendar/EventList dans le SelectHandler et passer la date en paramètre dans l'url. Fonctionne bien. –

Questions connexes