2009-05-26 5 views
1

Je vois qu'il ya une question here mais il n'y a pas de réponse définitive. Quelqu'un at-il des idées sur la façon de retourner une vue partielle avec Javascript ou JSON. Je fais un post AJAX, en cas de succès, il rend le PartialView, mais doit ensuite exécuter du javascript ou vérifier le résultat JSON.Retour PartialView et Javascript de contrôleur

Répondre

1
public static string RenderPartialToString(string controlName, object viewData, object model, System.Web.Routing.RequestContext viewContext) 
      { 

       ViewDataDictionary vd = new ViewDataDictionary(viewData); 
       ViewPage vp = new ViewPage { ViewData = vd }; 

       vp.ViewData = vd; 
       vp.ViewData.Model = model; 
       vp.ViewContext = new ViewContext(); 
       vp.Url = new UrlHelper(viewContext); 

       Control control = vp.LoadControl(controlName); 

       vp.Controls.Add(control); 

       StringBuilder sb = new StringBuilder(); 

       using (StringWriter sw = new StringWriter(sb)) 
       { 

        using (HtmlTextWriter tw = new HtmlTextWriter(sw)) 
        { 

         vp.RenderControl(tw); 

        } 

       } 

       return sb.ToString(); 

      } 
+0

je vois que vous trouvé une solution. Vous l'avez trouvé ailleurs ou avez-vous trouvé cela vous-même? Juste curieux ... –

+0

A pris d'ici et l'a légèrement modifié - http://thriftybliss.spaces.live.com/blog/cns!58DA805F37F31F20!170.entry – Jon

0

Je pense que la réponse fournie à l'autre question peut être votre meilleure option. Vous ne pouvez pas soudainement avoir une autre signature de méthode onSuccess où un autre paramètre est ajouté avec un objet JSON, de sorte que vous êtes coincé avec un objet de retour. Logiquement, cet objet doit alors contenir à la fois votre vue et votre objet JSON, ce qui implique que l'objet lui-même doit être un objet JSON.

+0

Lorsque le poste est appelé au contrôleur, il est par jQuery AJAX. Le contrôleur renvoie le code HTML. Un objet JSON contient des données sur ce qui s'est passé ainsi que des erreurs éventuelles. L'événement OnSuccess peut mettre à jour un div avec le PartialView comme il écrit à la réponse en est ainsi ce qui est émis, cependant, je dois faire quelque chose avec un objet JSON – Jon

+0

donc l'objet JSON est seulement revenu en cas d'une condition d'erreur? –

+0

Non, son retourné chaque fois, il contiendra des données simples telles que « personne mise à jour » ou des données plus complexes si des erreurs se produisent – Jon

Questions connexes