6

我想做的是使用不同的模板生成电子邮件内容。

我认为 ASP.NET MVC 可能非常适合这一点。我的控制器将获取电子邮件的必要数据并决定要呈现哪个视图(模板)。(这不仅仅是一个简单的邮件合并,还需要有条件块、foreach 等)

我希望能够将这些模板存储在数据库中,而不是作为 Web 应用程序中的文件,因此可以轻松地从 Web 应用程序本身添加新模板。

这可能吗?我希望能够使用 WebForms 视图引擎,但如果不可能的话,我会考虑使用其他视图引擎。理想情况下,我想使用类型化的视图。

4

4 回答 4

2

不幸的是,WebForms ViewEngine 使用一些内部类来编译 aspx 和 ascx 文件,所以这是不可能的。该 ViewEngine 要求视图可作为站点根目录内的文件夹中的文件使用(虚拟文件夹也适用于 IIRC)。

还有其他的 ViewEngines 可能更适合您的目的,包括一些使用 XSLT 的。

AFAIR 可以在同一个应用程序中混合使用多个 ViewEngine,因此您可以将 WebForms 引擎用于您的普通网页,并为您的电子邮件使用不同的引擎。

于 2009-09-23T20:52:34.210 回答
2

您确实可以在同一个应用程序中使用多个视图引擎。框架将询问每个引擎是否能够呈现请求的视图。检查 MvcContrib 以获取其他可用的视图引擎...

如上一个答案所述,WebForms ViewEngine 假设视图(aspx,ascx)物理存储在文件系统上,就像 ASP.NET 所做的那样(尽管在 ASP.NET 中你有类似VirtualPathProvider的东西) - 我相信 - 最初添加到框架以支持例如 SharePoint)。

如果你想创建自己的视图引擎,你应该实现 IViewEngine,并将视图引擎添加到 ViewEngines 集合中,例如在 Application_Start 中。

于 2009-09-23T21:44:35.677 回答
1

Phil Haack 在这里有一篇关于类似内容的精彩文章

我认为它可以适应您的需求。

善良,

于 2009-09-24T12:10:44.430 回答
0

你必须创建你的视图引擎和你的 buildmanager。您的视图引擎可以简单地从数据库中检索 aspx 部分并调用 webform 引擎。不容易但可行,这主要取决于您对它的需求程度以及它将如何以良好的投资回报率回报您。

于 2010-11-08T16:04:32.580 回答