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

asp.net-mvc – 在Controller或其他地方渲染部分字符串

发布时间:2020-12-16 00:02:45 所属栏目:asp.Net 来源:网络整理
导读:所以基本上我有一个局部视图,可以为我建立一个很好的表.我想每周通过电子邮件发送给我的用户.我不想再次基本复制模板,而是希望将模型转发给控制器,并将相应生成的HTML作为字符串接收. 是否可以在Controller中执行此操作,我觉得它应该是一个非常简单的过程.
所以基本上我有一个局部视图,可以为我建立一个很好的表.我想每周通过电子邮件发送给我的用户.我不想再次基本复制模板,而是希望将模型转发给控制器,并将相应生成的HTML作为字符串接收.

是否可以在Controller中执行此操作,我觉得它应该是一个非常简单的过程.

解决方法

把它放到Helper文件中:
public static string RenderViewToString(ControllerContext context,string viewName,object model)
        {
            if (string.IsNullOrEmpty(viewName))
                viewName = context.RouteData.GetRequiredString("action");

            ViewDataDictionary viewData = new ViewDataDictionary(model);

            using (StringWriter sw = new StringWriter())
            {
                ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(context,viewName);
                ViewContext viewContext = new ViewContext(context,viewResult.View,viewData,new TempDataDictionary(),sw);
                viewResult.View.Render(viewContext,sw);

                return sw.GetStringBuilder().ToString();
            }
        }

然后从控制器你可以像这样调用它:

var order = orderService.GetOrder(id);

var orderPrint = MyHelper.RenderViewToString(this.ControllerContext,"_OrderView",order);

(编辑:李大同)

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

    推荐文章
      热点阅读