Próbuję użyć zaakceptowanej odpowiedzi od this question.Pobierz html z widoku MVC 4 na ciąg znaków
Wygląda na to, że będzie dokładnie to, czego szukam, ale mam problem. Nie wiem, jak to nazwać. To, co mam do tej pory:
pierwsze jestem kopiując kod z roztworu wspominałem:
public string ToHtml(string viewToRender, ViewDataDictionary viewData, ControllerContext controllerContext)
{
var result = ViewEngines.Engines.FindView(controllerContext, viewToRender, null);
StringWriter output;
using (output = new StringWriter())
{
var viewContext = new ViewContext(controllerContext, result.View, viewData, controllerContext.Controller.TempData, output);
result.View.Render(viewContext, output);
result.ViewEngine.ReleaseView(controllerContext, result.View);
}
return output.ToString();
}
to co mam:
string viewToRender = "...";
int Data1 = ...;
int Data2 = ...;
System.Web.Mvc.ViewDataDictionary viewData = new System.Web.Mvc.ViewDataDictionary();
viewData.Add("Data1",Data1);
viewData.Add("Data2",Data2);
string html = ToHtml(viewToRender, viewData, ?????)//Here is my problem.
Co mam przekazać w parametr controllerContext?
Kontekst kontrolera jest właściwością kontrolera MVC. Jeśli chcesz uzyskać widok bieżącego kontrolera, wpisz: this.ControllerContext – Oliver
@Oliver Chcę wywołać tę metodę poza kontrolerem. Czy to możliwe? Jeśli tak, to chciałbym jakoś zdefiniować kontroler. Jak mam to zrobic? –
Używam tego pomocnika: publiczny ciąg statyczny RenderPartialViewToString (kontroler kontrolera, string viewName, model obiektu), a następnie po prostu wywołuję kontroler.ControllerContext. – Oliver