0

我们目前正在使用一种产品来发送电子邮件,并且正在使用许多定期运行的可执行文件来发送电子邮件。这个产品对动态数据的处理非常有限,所以如果我们想要一个列表中的表格,我们必须在我们的 C# 代码中创建表格并将 HTML 作为单个变量发送,这导致我们在我们的配置文件中包含 HTML。

一位同事看到这种类型的东西,并认为我们也许可以使用它。所以我正在尝试开发一个在可执行文件中创建视图并将其转换为字符串的概念验证(然后我们将在电子邮件产品之外开发我们的电子邮件并将整个内容作为单个字符串发送。

我的问题是:

1)有没有更好的方法来做到这一点? 引入 MVC 框架当然不是它的本意。如果有另一种产品可以满足我们的需求(允许我们轻松创建动态电子邮件),并且易于使用且更适合,那就太好了。

2)我应该伪造所有数据吗? 如果我创建假的 http 上下文和所有的爵士乐,我可以让它做我想做的事。

3)有没有更简单的方法可以基于 ViewModel 将视图转换为字符串?

4

1 回答 1

3

If you don't need HTTP to be involved at all, you can simply run Razor engine from C# directly using RazorEngine project - there is a great project that allows you to do so - https://github.com/Antaris/RazorEngine.

It allows you to use Razor as general purpose templating engine (rather than something MVC-specific).

Simple example from GitHub:

string template = "Hello @Model.Name, welcome to RazorEngine!";
string result = Razor.Parse(template, new { Name = "World" });

Alternatively, if you still want that to be accessible via HTTP, you could do this relatively easy with ASP.NET Web API, in a very lightweight manner - without having to worry about ASP.NET whatsoever (since you can even self host that).

WebApiContrib has a Razor view formatter already available - https://github.com/WebApiContrib/WebApiContrib.Formatting.RazorViewEngine

于 2013-01-22T17:46:06.567 回答