ASP.Net MVC将视图从另一个控制器呈现为字符串

时间:2012-01-16 15:30:08

标签: asp.net-mvc asp.net-mvc-3 razor

我正在努力将另一个控制器的视图呈现给字符串。 我用它来生成电子邮件模板。为此我创建了一个名为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。 你有解决方案吗?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

为什么不使用FluentEmail?使用Nuget进行设置需要几秒钟,您可以使用简单易用的电子邮件工具获得Razor模板的所有优点。

答案 2 :(得分:0)

EmailController.RenderPartialViewToString您传递了emailController而不是context

将该行修改为:

  EmailController.RenderPartialViewToString(context, "ConfirmationEmail", new EmailModel())