在带有常规视图引擎的MVC 2中,我可以通过返回Json()将ascx局部视图作为字符串返回
但是使用新的Razor .cshtml视图我无法弄清楚如何做到这一点.我一直得到Type’AS.CustomerForm_cshtml’不从’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(); }
解决方法
这可能对你有帮助,因为我已经把它写在我的头顶而不测试它,除了验证它返回渲染的cshtml文件.
我以为这是Controller中的一种方法.
private string ControlToString(string controlPath,object model) { CshtmlView control = new CshtmlView(controlPath); HtmlTextWriter writer = new HtmlTextWriter(new System.IO.StringWriter()); control.Render(new ViewContext(this.ControllerContext,control,this.ViewData,this.TempData,writer),writer); string value = ((StringWriter)writer.InnerWriter).ToString(); return value; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。