ASP.Net MVC отображает представление из другого контроллера в строку - PullRequest
1 голос
/ 16 января 2012

Я пытаюсь часами рендерить представление из другого контроллера в строку.Я использую это для создания шаблонов электронной почты.Для этого я создал контроллер с именем EmailController, у которого есть представление ConfirmationEmail.cshtml. Я хочу отобразить это представление в действии Home.Index, например.Причиной этого является организация, потому что я хочу, чтобы представления электронной почты находились в ~ / View / Email / ..., а EmailController будет использоваться только для их рендеринга.Также ~ / View / Shared / Email / ... будет в порядке, если у вас есть другое предложение.

Вы предлагаете другой подход?

Я видел эту тему ASP.NET MVCRazor: Как отобразить HTML Razor Partial View внутри действия контроллера , но я не могу заставить его работать.

Мне нужно что-то вроде:

    public ActionResult Index()
        {
                EmailController emailController = new EmailController();
                ControllerContext context = new ControllerContext(this.ControllerContext.RequestContext, emailController);
                EmailController.RenderPartialViewToString(emailController, "ConfirmationEmail", new EmailModel());
}

Это не работает :(и объект viewResult в методе RenderPartialViewToString имеет значение null. У вас есть решение для этого?

Ответы [ 3 ]

1 голос
/ 16 января 2012

Вы проверяли проект MvcMailer?

https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide

0 голосов
/ 16 января 2012

EmailController.RenderPartialViewToString вы передали emailController вместо context

Измените эту строку на что-то вроде:

  EmailController.RenderPartialViewToString(context, "ConfirmationEmail", new EmailModel())
0 голосов
/ 16 января 2012

Почему бы не использовать FluentEmail ? Установка с использованием Nuget занимает несколько секунд, и вы получаете все преимущества шаблонов Razor с помощью простого в использовании инструмента электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...