我正在努力将另一个控制器的视图呈现给字符串。 我用它来生成电子邮件模板。为此我创建了一个名为EmailController的控制器,它有一个ConfirmationEmail.cshtml视图 我想在Home.Index操作中渲染该视图。原因是组织,因为我想在〜/ View / Email / ...中使用电子邮件视图,而EmailController将仅用于渲染它们。如果您有其他建议,也可以〜/查看/共享/电子邮件/ ...
你建议采用另一种方法吗?
我看到了这个帖子ASP.NET MVC Razor: How to render a Razor Partial View's HTML inside the controller action,但我无法使其发挥作用。
我需要类似的东西:
public ActionResult Index()
{
EmailController emailController = new EmailController();
ControllerContext context = new ControllerContext(this.ControllerContext.RequestContext, emailController);
EmailController.RenderPartialViewToString(emailController, "ConfirmationEmail", new EmailModel());
}
这不起作用:(并且RenderPartialViewToString方法中的viewResult对象为null。 你有解决方案吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
为什么不使用FluentEmail?使用Nuget进行设置需要几秒钟,您可以使用简单易用的电子邮件工具获得Razor模板的所有优点。
答案 2 :(得分:0)
EmailController.RenderPartialViewToString
您传递了emailController
而不是context
将该行修改为:
EmailController.RenderPartialViewToString(context, "ConfirmationEmail", new EmailModel())