ASP.NET MVC是否可以从数据库中提取的模板中呈现视图?

时间:2009-09-23 20:10:52

标签: asp.net-mvc viewengine

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

我认为ASP.NET MVC可能非常适合这种情况。我的控制器将获取电子邮件的必要数据并决定要呈现的视图(模板)。 (更简单的说就是简单的邮件合并,需要有条件块,foreach等等。)

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

这可能吗?我希望能够使用WebForms视图引擎,但如果不可能,则会考虑其他视图引擎。我理想情况下喜欢使用键入的视图。

4 个答案:

答案 0 :(得分:2)

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

还有其他ViewEngines可以更好地满足您的目的,包括一些使用XSLT的。

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

菲尔·哈克(Phil Haack)在这里有类似的东西great article

我认为它可以根据您的需求进行调整。

善,

答案 3 :(得分:0)

你必须创建你的viewengine,以及你的buildmanager。您的viewengine可以简单地从db中检索aspx部分并调用webform引擎。不容易但可行,这主要取决于你需要多么糟糕,以及如何以良好的投资回报率奖励你。