所以基本上我有一个局部视图,可以为我建立一个很好的表.我想每周通过电子邮件发送给我的用户.我不想再次基本复制模板,而是希望将模型转发给控制器,并将相应生成的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);