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

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 在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);

猜你在找的asp.Net相关文章