Создание представлений в стиле ASP.NET MVC в консольном приложении? - PullRequest
5 голосов
/ 19 октября 2010

У меня есть консольное приложение, которое требует от меня отправки электронных писем. Прямо сейчас я использую строителя строк для создания электронных писем, но я хотел бы получить больше фантазии. Потом до меня дошло: было бы неплохо отправить мой объект в представление стиля ASP.NET MVC, где у меня была бы разметка HTML, а затем вернуть его по почте. Прямо сейчас, у меня это идет как;

    private void MailJobList(List<Job> newJobs) {
                var body = new System.Text.StringBuilder();
                var from = new MailAddress("daemon@mydomain.com");
                var to = new MailAddress(addresslist.Get());

                var message = new MailMessage(from, to);

                message.Subject = "New job list";

    //mail settings ommitted here for brevity

                body.Append("New jobs: ");
                if (newJobs.Any()) {
                    foreach (var newJob in newJobs) {
                        body.Append(newJob.Job + ", ");
                    }
                }

                message.Body = body.ToString();

                client.Send(message);
}

Очевидно, что это просто текст, но я бы очень хотел иметь возможность сделать что-то вроде:

var body = RenderHTMLMessage(newJobs);

Кажется, я должен быть в состоянии использовать движок представлений ASP.NET MVC (или Spark, или любой другой движок представлений), а не работать самостоятельно Если я не в курсе или есть более простой способ сделать это, я открыт для предложений.

Ответы [ 6 ]

4 голосов
/ 19 октября 2010

Вы можете использовать новый Razor механизм просмотра в консольном приложении, см. Следующий пост в блоге:

http://thegsharp.wordpress.com/2010/07/07/using-razor-from-a-console-application/

3 голосов
/ 19 октября 2010

Вы можете использовать Spark View Engine в качестве универсального шаблонизатора .Создатель Spark написал пост в блоге о том, как это сделать (было бы хорошим началом).

2 голосов
/ 19 октября 2010

Для этого вы можете использовать шаблоны T4 , синтаксис которых аналогичен asp.net. Требуется версия T4, которая поставляется вместе с VS2010. Здесь - пример, а здесь - msdn по теме

0 голосов
/ 20 октября 2010

Попробуйте DotLiquid (www.dotliquidmarkup.org).Это шаблонизатор, который можно использовать в любом приложении с простым синтаксисом.

0 голосов
/ 19 октября 2010

Инфраструктура MVC была бы слишком тяжелой для этой задачи.если вы не пишете / не размещаете приложение MVC для создания страниц, а затем читаете html непосредственно из URL-адреса перед отправкой по электронной почте (это также может означать, что ссылка (просмотреть это в браузере) уже создана (если она используется для рассылок новостей.

Для определенных электронных писем создайте файлы шаблонов html, которые содержат все html (и встроенные стили, требуемые для писем), затем прочитайте html и замените токены, например ## TO_NAME ## и т. Д. Токены или списки (записанные строки) будутв любом случае, будьте довольно конкретным кодом для каждого из них.

Это означает, что вы можете изменить шаблоны электронной почты отдельно для кода и пропустить содержимое, не удаляя токены из шаблона электронной почты.

например:

<html>
<body style="font-size:10px">
Dear ##To_NAME##< /br>
</br>
Your Jobs< /br>
  <table>
      <tr>
         <td colspan="2">New Jobs<td>
      </tr>
      ##JOB_LIST##
  <table>
  ##FROM_NAME##
</body>
</html>
0 голосов
/ 19 октября 2010

Проблема здесь в том, что ASP.NET MVC сильно зависит от ASP.NET, а ASP.NET - от веб-сервера. Я не думаю, что это выполнимо так, как вы хотите. То, что вы могли бы сделать, это разместить ASP.NET самостоятельно и подделать запросы к себе.

...