Guillaume Lacasa
L’AjaxHelper de ASP.NET MVC
Nous continuons notre découverte de MVC, avec au programme cette fois une nouvelle manière de faire de l’Ajax spécifique au framework ASP.NET MVC.
Par Guillaume Lacasa publié le 21/10/2009 à 20:46, lu 3325 fois, 6 pages
 4 | Coté serveur
Les requêtes Ajax vont appeler des actions sur le serveur, de la même manière que les requêtes http classiques. En effet, la différence entre ces deux types de requêtes est dans la vue : tandis qu’une requête http classique renverra une page web complète, une requête Ajax ne renverra qu’un morceau de la page.
Le pattern MVC étant fait pour séparer les contrôleurs des vues, l’appel fait au contrôleur se fait donc de la même manière quel que soit le type de la requête, la différence se faisant uniquement lors de l’envoi de la vue au navigateur. Au lieu de renvoyer une page entière, cette fois on va utiliser une vue partielle, pendant MVC des UserControl.
 
/content/68c6665e-1208-4073-94f0-a95e43e2f2b1/image2.png
 
Lors de la création de la vue, il suffit de cocher la case « Create a partial view (.ascx) », et on ne mettra dans notre fichier ascx que ce qui sera renvoyé au client.
Dans l’action de votre contrôleur, vous pouvez savoir si la requête en cours est une requête Ajax ou non, à l’aide de la méthode Request.IsAjaxRequest(). Ainsi, vous avez donc la possibilité d’utiliser une même action dans les deux types de requêtes, et de renvoyer soit une page complète, soit une vue partielle :

public ActionResult Search(String name)

{

    ViewData["searchResult"] = SearchProducts();

 

    if (Request.IsAjaxRequest())

        return PartialView("SearchResult");

    else

        return View("Search");

}

Cet exemple d’action mets les résultats de la recherche dans le dictionnaire ViewData, et renvoie vers une vue. Si la requête est une requête Ajax, elle renverra uniquement vers la vue partielle « SearchResult » qui affiche uniquement les résultats de la recherche. Dans le cas contraire, elle renverra vers une vue normale qui renvoie une page html complète. Cette page affichant aussi les résultats de la recherche, on pourra réutiliser dans cette page la même vue partielle.
 
» Démarrer une discussion
 
Discussion démarée par emmano3h le 17/11/2010 à 12:14, 1 commentaire(s).