在控制台应用程序中创建ASP.NET MVC样式视图?

时间:2010-10-19 16:03:44

标签: asp.net-mvc asp.net-mvc-2 viewengine

我有一个控制台应用程序,需要我发送电子邮件。现在我使用字符串生成器来创建电子邮件,但我想更加喜欢。然后它突然出现在我身上:将我的对象发送到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 个答案:

答案 0 :(得分:4)

您可以在控制台应用中使用新的Razor视图引擎,请参阅以下博文:

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

答案 1 :(得分:3)

您可以将Spark View Engine用作general purpose templating engine。 Spark的创建者写了一篇关于如何去做的博客文章(这将是一个好的开始)。

答案 2 :(得分:2)

您可以使用T4 templates来执行此操作,其语法类似于asp.net。但它需要VS2010附带的T4版本。 Here就是一个例子,here是关于主题的msdn

答案 3 :(得分:0)

这里的问题是ASP.NET MVC在很大程度上依赖于ASP.NET,并且ASP.NET依赖于Web服务器。我认为它不像你想要的那样可行。您可以做的是自己托管ASP.NET,并向自己伪造请求。

答案 4 :(得分:0)

MVC基础设施对于此任务来说太重了。除非您编写/托管MVC应用程序来创建页面,然后在发送电子邮件之前直接从URL读取html(这也可能意味着已经创建了(在浏览器中查看此链接)链接(如果将其用于新手中。

对于特定的电子邮件,创建包含所有html(以及电子邮件所需的内联样式)的html模板文件,然后读入html并替换标记,例如## TO_NAME ## etc标记或列表(写出的行)无论如何,每个人都会有非常具体的代码。

这意味着您可以将电子邮件模板分别更改为代码,并通过不从电子邮件模板中删除令牌来省略内容。

例如:

<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>

答案 5 :(得分:0)

试试DotLiquid(www.dotliquidmarkup.org)。它是一个模板引擎,可以在各种应用程序中使用,语法简单。