PartialView Html-String
Habe ich einen workflow, der verwendet signalR zum aktualisieren einer Seite, wie Daten, die von dem service. Derzeit ist der flow sieht wie folgt aus:
Service -> SignalR Hub Controller
v ^ v
View Partial
Die oberste Zeile ist server-side, bottom-client. Ich benutze signalR zu erreichen, meine jquery-Funktion, die verwendet AJAX, um die partiellen view vom controller und aktualisieren Sie die Seite.
Wie es scheint, konnte ich verkürzen diesen Prozess :
Service -> Controller -> SignalR Hub
v
View
Wo der controller würde senden Sie die string-Darstellung des partiellen view, um den SignalR-Hub.
Mein problem ist zu versuchen, um die string-Darstellung des partiellen view. Ich habe sah sich um und fand diesen code:
protected string RenderPartialViewToString(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = ControllerContext.RouteData.GetRequiredString("action");
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
Aber dies erfordert, dass der ControllerContext, das ist für mich immer null, wie ich bin nicht der Aufruf dieser Methode vom client. Ich habe nicht gefunden, einen Weg, um das Rendern der partiellen Sicht, ohne den ControllerContext. Ist es möglich, dies zu tun?
- Mögliche Duplikate von: stackoverflow.com/questions/15896703/... eine Andere Antwort: forums.asp.net/t/1888849.aspx
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort in den Kommentaren verlinkt ist ein Weg, es zu tun. Ich stolperte über einen anderen Weg durch dieses Seite: erstellen einer Schein-controller-contexts. Ich habe gerade realisiert das ich in den letzten Wochen und es funktioniert gut.
So, würden Sie aktualisieren Ihr code etwa so:
Und rufen Sie es so auf:
Fand ich diese eine Zeile code funktioniert perfekt. orderModel meine model-Objekt. Diese muss man nicht verwenden, ControllerContext, sondern html-Kontext der helper-Methode.