Dans MVC 2 avec le moteur régulier de vue que je pourrais retourner une vue partielle ascx sous forme de chaîne par return Json()
Retour Razor vue partielle en utilisant JSON (ASP MVC 3)
Mais avec les nouvelles vues .cshtml rasoir, je ne peux pas comprendre comment faire ça Je reçois toujours Type 'ASP.CustomerForm_cshtml' does not inherit from 'System.Web.UI.UserControl'.
La vue partielle hérite de System.Web.Mvc.WebViewPage<T>
et une autre erreur apparaît si j'hérite de System.Web.UI.UserControl<T>
comme l'indique la première erreur.
Des idées sur la façon de résoudre ce problème en utilisant ASP MVC 3 et le moteur de vue Razor?
Ceci est ma fonction ControlToString:
private string ControlToString(string controlPath, object model)
{
ViewPage page = new ViewPage();
ViewUserControl ctl = (ViewUserControl)page.LoadControl(controlPath);
page.Controls.Add(ctl);
page.ViewData.Model = model;
page.ViewContext = new ViewContext();
System.IO.StringWriter writer = new System.IO.StringWriter();
System.Web.HttpContext.Current.Server.Execute(page, writer, false);
string outputToReturn = writer.ToString();
writer.Close();
//return this.Json(outputToReturn.Trim());
return outputToReturn.Trim();
}
Merci, cela fonctionne. Je reçois la vue comme une chaîne. Mais le modèle n'est pas pris en charge partout dans votre code. J'ai essayé d'ajouter le modèle en tant que paramètre dans 'CshtmlView()' mais il n'a pas pris model comme paramètre. Des pensées? – Martin
je l'ai élaboré, vous devez ajouter 'this.ViewData.Model = model;' dans votre code, alors cela fonctionne: D – Martin