En MVC 2 con el motor de vista normal que podría devolver una vista parcial ascx como cadena a través de return Json()
vista parcial nuevamente la afeitadora usando JSON (ASP MVC 3)
Pero con las nuevas vistas Razor .cshtml no puedo averiguar como hacer esto. Sigo recibiendo Type 'ASP.CustomerForm_cshtml' does not inherit from 'System.Web.UI.UserControl'.
La vista parcial hereda de System.Web.Mvc.WebViewPage<T>
y aparece otro error si heredo de System.Web.UI.UserControl<T>
como dice el primer error.
¿Alguna idea sobre cómo solucionar esto utilizando ASP MVC 3 y Razor view engine?
Ésta es mi función 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();
}
Gracias, funciona. Obtengo la vista como una cadena. Pero el modelo no está siendo atendido en ninguna parte de su código. Intenté agregar el modelo como parámetro en 'CshtmlView()' pero no tomó el modelo como parámetro. ¿Alguna idea? – Martin
lo resolví, tienes que agregar 'this.ViewData.Model = model;' en tu código, luego funciona: D – Martin