在MVC 2中,我可以通过return Json()
返回一个ascx部分视图字符串。但是在新的Razor .cshtml视图中,我无法弄清楚如何做到这一点。我一直收到错误:Type 'ASP.CustomerForm_cshtml' does not inherit from 'System.Web.UI.UserControl'.
这个部分视图继承自System.Web.Mvc.WebViewPage<T>
,如果我从System.Web.UI.UserControl<T>
继承,则会出现另一个错误,与第一个错误相同。
您有什么想法如何在ASP MVC 3和Razor视图引擎中解决这个问题吗?
这是我的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();
}
CshtmlView()
中添加模型作为参数,但它不接受模型作为参数。有什么想法吗? - Martin at Menntthis.ViewData.Model = model;
,然后它就能正常工作了 :D - Martin at Mennt