调用另一个控制器的操作并以字符串形式获取视图

本文关键字:字符串 获取 视图 另一个 控制器 操作 调用 | 更新日期: 2023-09-27 18:35:52

是否可以调用另一个控制器的操作并以字符串形式接收其结果视图?

我想使用 .net mvc 的标准行为,它允许我根据正确的模型和视图创建电子邮件。我知道我可以使用 RazorEngine,但在这种情况下,我必须传递一个完整的路径才能查看,如果我想使用 eg,我应该覆盖基类。@Html或@Url。

调用另一个控制器的操作并以字符串形式获取视图

我已经通过将

以下内容添加到我的基本控制器类中,在几种情况下做到了这一点。

protected string RenderViewToString(string viewName, object model = null)
{
  ViewData.Model = model;
  using(StringWriter sw = new StringWriter())
  {
    ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext, viewName, null);
    ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
    viewResult.View.Render(viewContext, sw);
    return sw.GetStringBuilder().ToString();
  }
}
protected string RenderPartialViewToString(string viewName, object model = null)
{
  ViewData.Model = model;
  using(StringWriter sw = new StringWriter())
  {
    ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
    ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
    viewResult.View.Render(viewContext, sw);
    return sw.GetStringBuilder().ToString();
  }
}