我想确保我遵循ASP .NET MVC 3上下文中的最佳实践。当使用MVC 3 Web应用程序执行某些操作时,我使用Razor模板引擎生成自动电子邮件。
我为电子邮件程序创建了一个单独的类库,这个类库将包含生成电子邮件时将使用的模型以及使用适当的视图和模型生成必要的消息文本的消息工厂
我不确定我应该在哪里存储我的视图模板。我想将它们存储为CSHTML,因为这将允许项目开发人员(Razor的新手)在创建邮件模板时使用IntelliSense。
我认为我不能将它们存储在类库的文件夹中,因为这会使部署更加复杂。如果我将它们存储在MVC 3 Web应用程序根目录中的文件夹中,则互联网上的任何人都可以访问这些文件,并且知道正确的路径。我现在考虑两个选择:
将它们存储在app_data文件夹中,但这似乎不整洁。
将它们存储在MVC的Views文件夹中名为“EmailTemplates”的文件夹中。我认为这是最好的选择,因为你无法直接浏览它(没有控制器),我们的开发人员可以轻松访问它们并使用IntelliSense。
选项2是最好的选择,将这些邮件模板放在这里会是一种罪过吗?然后我会直接通过本地文件系统访问这些文件,但是我不确定一旦部署到生产环境后是否会出现安全问题(可能使用app_data文件夹会阻止这种情况)。我希望部署的配置最少。
谢谢!
答案 0 :(得分:2)
像往常一样,没有一个正确的答案,一切都是关于哲学和方法,但最重要的(在我看来) - 效用。 I.E.如果它有效,易于维护,可理解 - 为什么不这样做?
我愿意,把它放在App_Data文件夹下 - 根据定义,这是应用程序使用的所有数据。数据库就在那里,配置XML就在那里等。那么为什么不将这个文件夹用于你的目的。
您可以在C#代码中轻松访问它:System.Web.HttpContext.Current.Server.MapPath(@"~/App_Data")
。我不认为任何其他(由你自己创建)文件夹会更好或更糟......它只是App_Data专门用于这些目的,但它并不意味着你不能做其他事情,这在你的应用程序中是有意义的
希望这有帮助。
答案 1 :(得分:1)
经过更多研究和一些实验后,Views文件夹似乎是我的电子邮件模板的最佳位置。这是我的理由:
电子邮件模板仅供Web应用程序使用,而不会被其他任何内容使用。
MVC应用程序将在其下运行的应用程序池,至少可以访问Views文件夹中的文件夹。这意味着我不需要在部署期间满足文件夹的任何特殊权限。 (虽然App_Data文件夹也是如此)。
IntelliSense无法在App_Data文件夹中运行,但可在Views文件夹中运行。由于这个项目的开发人员是Razor的新手,因此IntelliSense将使他们更容易。另外,只是简化了模板的开发。
虽然我为模板邮件程序创建了一个单独的项目 可以使用MVC模型存储邮件模板的模型 好。