【问题标题】:ASP.NET MVC Folder ConventionsASP.NET MVC 文件夹约定
【发布时间】:2012-04-29 01:46:23
【问题描述】:

ASP.NET MVC 项目遵循模型、视图和控制器的命名和文件夹约定。对于其他代码(例如:Action Filters、Delegating Handlers 等),是否有关于在项目的文件夹结构中找到这些代码的最佳实践?

【问题讨论】:

    标签: asp.net-mvc directory


    【解决方案1】:

    找出答案的一个好方法是查看实际的最佳实践是查看开源项目。 IIRC 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 存储库,了解他们喜欢做什么。

    【讨论】:

    • 将控制器放在单独的项目中,将视图放在单独的项目中是个好主意吗?
    【解决方案2】:

    没有这样的标准方法。不同的从业者提出了不同的方法,但都各有利弊。但是,根据适用的设计限制,这里有一些提示:

    1. 可重用性

      如果您希望您的操作过滤器、委托处理程序等可重用,那么将它们放在 asp.net mvc webroot 中的专用文件夹中就可以了。这样,所有此类过滤器都将具有全局范围,并且可以根据需要使用。

    2. 可插拔性

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

    我曾经问过一个类似的问题,关于如何在 asp.net mvc 项目中组织模型。可惜没有得到太多回应。 Models in asp.net mvc 3 areas

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 2011-11-09
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多