2011-05-17 4 views
1

Actuellement, j'utilise un post ajax pour revenir à une action afin de créer un nouvel objet de base de données, puis renvoyer le code HTML rendu pour une vue de cet objet. J'injecte ensuite ce HTML dans la page. Je me demandais, puisque MVC vous permet facilement de rendre des vues au HTML depuis des contrôleurs, s'il y avait une meilleure approche (ou plus correcte) au problème.Approche correcte pour éviter d'afficher la vue en action

(j'utilise actuellement this code pour rendre la vue en tant que html dans l'action).

Toutes et toutes les idées ont été appréciées.

Répondre

4

En fait il y a. Renvoyez juste une vue partielle.

public ActionResult AjaxStuff() 
{ 
    // do whatever 
    var model = ...; 
    return PartialView(model); 
} 
+0

Merci pour cela. Comment puis-je rendre ce ActionResult en HTML sur le client. Je veux l'injecter dans le dom en utilisant jquery.replaceWith. Je pense que l'actionResult est un moyen assez lourd de retourner l'information n'est-ce pas? –

0

Vous pouvez rendre une PartialView que l'autre réponse suggérée ou retourner JsonResult et remplir votre code HTML à partir des données JSON. Ton appel.

2

Il est vrai que vous pouvez le rendre en utilisant PartialView ou en le personnalisant via JSON (PartialView est tellement plus simple!).

Cela dépend vraiment de votre implémentation et de vos choix concernant la dégradation progressive.

Ce que je fais habituellement est:

[HttpGet] 
public ActionResult SignIn() 
{ 
    //Check if it is an AJAX request 
    if (Request.IsAjaxRequest()) 
     return PartialView(); 
    else 
     return View(); 
} 

Il est possible d'obtenir votre gâteau et le manger aussi.

À vrai dire, il existe plusieurs façons d'obtenir cette vue du serveur. Vous pouvez utiliser la bibliothèque asp.net mvc ajax js, utiliser .getJSON ou .ajax, ou même le faire via JQuery en utilisant .load: http://api.jquery.com/load/

Questions connexes