加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 03:36:44 所属栏目:asp.Net 来源:网络整理
导读:在带有常规视图引擎的MVC 2中,我可以通过返回Json()将ascx局部视图作为字符串返回 但是使用新的Razor .cshtml视图我无法弄清楚如何做到这一点.我一直得到Type’AS.CustomerForm_cshtml’不从’System.Web.UI.UserControl’继承. 部分视图继承自System.Web.Mv
在带有常规视图引擎的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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读