微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐