asp.net-mvc – 使用JSON返回Razor局部视图(ASP MVC 3)

在带有常规视图引擎的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;
}

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....