0

我想确保遵循 ASP .NET MVC 3 上下文中的最佳实践。当在 MVC 3 Web 应用程序上执行某些操作时,我使用 Razor 模板引擎生成自动电子邮件。

我为电子邮件创建了一个单独的类库,这个类库将包含生成电子邮件时将使用的模型以及一个消息工厂,它将使用适当的视图和模型生成必要的消息文本。

我不确定应该将视图模板存储在哪里。我想将它们存储为 CSHTML,因为这将允许项目中的开发人员(Razor 的新手)在创建邮件模板时使用 IntelliSense。

我认为我不能将它们存储在类库的文件夹中,因为这会使部署更加复杂。如果我将它们存储在 MVC 3 Web 应用程序根目录中的文件夹中,互联网上任何知道正确路径的人都可以访问它们。我现在考虑两种选择:

  1. 将它们存储在 app_data 文件夹中,但这似乎不整洁。

  2. 将它们存储在 MVC 的 Views 文件夹中名为“EmailTemplates”的文件夹中。我认为这是最好的选择,因为您不能直接浏览它(没有控制器),我们的开发人员可以轻松访问它们并使用 IntelliSense。

选项 2 是最好的选择吗,将这些邮件模板放在此处会是一种罪过吗?然后我会直接通过本地文件系统访问这些文件,但我不确定一旦部署到生产环境中是否会出现安全问题(也许使用 app_data 文件夹可以防止这种情况发生)。我想要最小的部署配置。

谢谢!

4

2 回答 2

2

像往常一样,没有一个正确的答案,这都是关于哲学和方法的,但最重要的(在我看来)——实用性。IE 如果它有效、易于维护、易于理解 - 为什么不这样做呢?

在您的情况下,我会将其放在 App_Data 文件夹下 - 根据定义,这是应用程序使用的所有数据所在的位置。数据库在那里,配置 XML 在那里等等。所以为什么不使用该文件夹来达到您的目的。

您可以像这样在 C# 代码中轻松访问它:System.Web.HttpContext.Current.Server.MapPath(@"~/App_Data") . 我不认为任何其他(由您自己创建)文件夹会更好或更糟......它只是 App_Data 专门用于这些目的,但这并不意味着您不能做其他事情,这在您的应用程序中是有意义的.

希望这可以帮助。

于 2012-08-14T20:22:20.400 回答
1

在做了更多的研究和一些实验之后,Views 文件夹似乎是我的电子邮件模板的最佳位置。这是我的推理:

  • 电子邮件模板将仅由 Web 应用程序使用,没有其他用途。

  • MVC 应用程序将在其下运行的应用程序池至少有权读取 Views 文件夹中的文件夹。这意味着我不需要在部署期间为文件夹提供任何特殊权限。(尽管 App_Data 文件夹也是如此)。

  • IntelliSense 在 App_Data 文件夹中不起作用,但在 Views 文件夹中起作用。由于该项目的开发人员是 Razor 的新手,因此 IntelliSense 将使他们的工作变得更轻松。也只是使模板的开发更容易。

  • 尽管我为模板邮件程序创建了一个单独的项目,但也可以将邮件模板的模型与您的 MVC 模型一起存储。

于 2012-08-16T06:46:41.057 回答