2009-05-26 7 views
1

Ich sehe, es gibt eine Frage here, aber es gibt keine endgültige Antwort. Hat jemand Ideen, wie man eine PartialView mit Javascript oder JSON zurückgibt. Ich mache eine AJAX-Post, bei Erfolg rendert sie die PartialView, muss dann aber etwas Javascript ausführen oder das JSON-Ergebnis prüfen.Return PartialView und Javascript von Controller

Antwort

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

Ich sehe Sie eine Lösung gefunden. Haben Sie es woanders gefunden oder haben Sie sich das selbst ausgedacht? Nur neugierig ... –

+0

Nahm es von hier und modifizierte es leicht - http://thriftybliss.spaces.live.com/blog/cns!58DA805F37F31F20!170.entry – Jon

0

Ich denke, die Antwort für die andere Frage möglicherweise Ihre beste Option sein. Sie können nicht plötzlich eine andere onSuccess Methodensignatur haben, bei der ein anderer Parameter mit einem JSON-Objekt hinzugefügt wird, sodass Sie mit einem Rückgabeobjekt festhängen. Logischerweise muss dieses Objekt dann sowohl Ihre Ansicht als auch Ihr JSON-Objekt enthalten, was impliziert, dass das Objekt selbst ein JSON-Objekt sein muss.

+0

Wenn der Post zum Controller aufgerufen wird, ist es über jQuery AJAX. Der Controller gibt HTML zurück. Ein JSON-Objekt enthält Daten darüber, was passiert ist und welche Fehler aufgetreten sind. Das OnSuccess-Ereignis kann ein Div mit dem PartialView aktualisieren, während es in die Antwort schreibt, so dass dies ausgegeben wird, aber ich muss etwas mit einem JSON-Objekt tun – Jon

+0

So wird das JSON-Objekt nur im Fehlerfall zurückgegeben? –

+0

Nein, es wird jedes Mal zurückgegeben, es enthält einfache Daten wie "person updated" oder komplexere Daten, wenn Fehler auftreten. – Jon

Verwandte Themen