ASP.NET MVC 文件夹约定

3

ASP.NET MVC 项目遵循关于 Models、Views 和 Controllers 的命名和文件夹规范。对于其他代码(例如:Action Filters、Delegating Handlers 等),是否存在最佳实践来确定其在项目文件夹结构中的位置?

2个回答

3
一个找到实际最佳实践的好方法是查看开源项目。如果我没记错,NuGet Gallery是由Asp.Net MVC团队编写的,因此它将作为他们视为最佳实践的很好示例,同时仍然是一个实际产品。

https://github.com/NuGet/NuGetGallery

看起来他们将FilterAttributes、HtmlHelpers等添加到了项目的根目录下:https://github.com/NuGet/NuGetGallery/blob/master/Website/RequireRemoteHttpsAttribute.cs

此外,Phil HaackDavid Ebbo曾在Asp.Net MVC团队工作,您可以查看他们的GitHub存储库以了解他们喜欢做什么。


将控制器放在一个单独的项目中,视图放在另一个单独的项目中是一个好主意吗? - user20358

1

没有标准的方法。不同的从业者提出了各种方法,但都有一些优缺点。然而,根据适用的设计约束条件,以下是一些指针:

  1. 可重用性

    如果您希望您的Action Filters、Delegating Handlers等可重用,则将它们放置在asp.net mvc webroot中的专用文件夹中即可完成工作。这样所有这样的过滤器都将具有全局范围,并且可以根据需要使用。

  2. 可插拔性

    如果想要将过滤器等创建为可插拔模块,则将它们放置在单独的DLL中可能是值得的。该库可以被视为一个黑盒子,它将所有上下文信息作为函数输入,并可以根据需要重复使用。 我喜欢Orchard CMS的可插拔架构http://www.orchardproject.net/

我曾经问过一个类似的问题,关于如何组织asp.net mvc项目中的模型。不幸的是,没有得到太多回应。 asp.net mvc 3区域中的模型


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接