Obtenir html de MVC 4 vue dans une chaîne
Je suis en train d'utiliser la accepté de répondre à de cette question.
Il semble que ce sera exactement ce que je recherche, mais j'ai un problème. Je ne sais pas comment l'appeler. C'est ce que j'ai à ce jour:
D'abord je copie le code de la solution que j'ai mentionné:
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();
}
C'est ce que j'ai:
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.
Que dois-je passer dans le controllerContext paramètre?
source d'informationauteur Giannis Paraskevopoulos
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer un contrôleur de base qui, évidemment, s'étend d'un contrôleur et d'utiliser la fonction ci-dessus dans la base de contrôleur et de l'autre contrôleur qui s'étend ce contrôleur de base sera en mesure de l'utiliser.
Cependant, le ControllerContext doit être utilisé comme
Et Donc votre BaseController sera comme
Et votre ToHtml() va être
Et sur l'utilisation du contrôleur de base
Plutôt que d'en hériter
Controller
ce qui signifie que vous avez à retenir pour mettre en œuvre ce à chaque fois, ou hériter d'uneCustomControllerBase
ce qui signifie que vous devez vous rappeler d'hériter de tous les temps - il suffit de faire une extension de la méthode:Puis à l'intérieur de votre
Controller
vous pouvez l'appeler comme ceci:C'est quasiment une copie de dav_i postsauf que vous avez un modèle avec un typage fort et aussi la capacité de produire des vues partielles:
Plutôt que d'en hériter
Controller
ce qui signifie que vous avez à retenir pour mettre en œuvre ce à chaque fois, ou hériter d'uneCustomControllerBase
ce qui signifie que vous devez vous rappeler d'hériter de tous les temps - il suffit de faire une extension de la méthode:Puis à l'intérieur de votre
Controller
vous pouvez l'appeler comme ceci (pour une vue complète):Cela signifie que vous obtiendrez le doctype et l'élément HTML etc trop. Pour une vue partielle d'utiliser: