调用另一个控制器的操作并以字符串形式获取视图
本文关键字:字符串 获取 视图 另一个 控制器 操作 调用 | 更新日期: 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();
}
}