Как отправить экран электронной почты в ASP.Net/MVC - PullRequest
1 голос
/ 10 сентября 2009

У меня есть приложение, которое состоит из 10+ связанных ascx-файлов, которые мы используем для отображения наших данных в браузере пользователей с помощью помощника Html.RenderPartial.

Мне нужно отправить по электронной почте данные, которые являются дубликатами того, что на экране. Я хотел бы иметь возможность получить сгенерированный html без необходимости делать скрининг экрана.

Есть ли какие-либо предложения относительно того, как это сделать? Я просто пытаюсь не дублировать работу.

Ответы [ 2 ]

3 голосов
/ 12 февраля 2010

http://www.brightmix.com/blog/renderpartial-to-string-in-asp-net-mvc/ имеет хорошее решение для рендеринга View в строку, чтобы вы могли отправить его по электронной почте.

/// Static Method to render string - put somewhere of your choosing
public static string RenderPartialToString(string controlName, object viewData)
{
     ViewDataDictionary vd = new ViewDataDictionary(viewData);
     ViewPage vp = new ViewPage { ViewData = vd };
     Control control = vp.LoadControl(controlName);

     vp.Controls.Add(control);

     StringBuilder sb = new StringBuilder();
     using (StringWriter sw = new StringWriter(sb))
     {
         using (HtmlTextWriter tw = new HtmlTextWriter(sw))
         {
             vp.RenderControl(tw);
         }
     }

     return sb.ToString();
}
3 голосов
/ 10 сентября 2009

В обычном asp.net вы можете переопределить Render () и предоставить свой собственный HtmlWriter для перехвата визуализированного html перед копированием его в переданный в HtmlWriter.

Я не знаю, как вы перехватите это в MVC, но я уверен, что вы сможете это сделать, особенно если вы создадите новый модуль HttpModule в конвейере, чтобы предварительно постобработка потока вывода.

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