Является ли их решением для создания шаблона электронной почты с использованием ASP.NET MVC View без необходимости переходить через обручи.
Позвольте мне продумать прыжки через обручи.
var fakeContext = new HttpContext(HttpContext.Current.Request, fakeResponse);
var oldContext = HttpContext.Current;
HttpContext.Current = fakeContext;
var html = new HtmlHelper(new ViewContext(fakeControllerContext,
new FakeView(), viewDataDictionary, new TempDataDictionary()),
new ViewPage());
html.RenderPartial(viewName, viewData, viewDataDictionary);
HttpContext.Current = oldContext;
В приведенном выше коде используется текущий HttpContext для подделки нового Контекста и отображения страницы с помощью RenderPartial, мы не должны этого делать.
Еще одно очень подробное решение с использованием ControllerContext и .Render: (IEmailTemplateService, Headers/Postback WorkAround), но в значительной степени делает то же самое с гораздо большим количеством кода.
Я, с другой стороны, ищу что-то, что просто визуализировало бы View, не имея POST/GET, и генерирует мне простую строку, которую я могу отправить через свой код электронной почты. Что-то, что не приводит к ошибкам, например, дважды публикует заголовки или подделывает часть данных.
EX:
//code which does not fire Render, RenderPartial... etc
var email = emailFramework.Create(viewData, view);
См. мое решение ниже или следуйте по этой ссылке:
Мое решение с использованием искры: (12/30/2009) Решение ASP.NET MVC для электронной почты