【问题标题】:Why are the controllers on ASP.NET MVC name-based?为什么 ASP.NET MVC 上的控制器是基于名称的?
【发布时间】:2010-09-20 22:25:48
【问题描述】:

在 ASP.NET MVC 中,我们需要为所有控制器使用后缀“Controller”。这似乎是不必要的限制 - 是否有技术原因?

我主要只是好奇,但可以看到更灵活的命名规则可以改善代码组织的情况。使用反射搜索Controller 派生类不能轻松发现可能的控制器类吗?或者要求控制器类标有ControllerAttribute

【问题讨论】:

    标签: asp.net-mvc code-organization


    【解决方案1】:

    MVC 社区深受Ruby on Rails 的影响,它重视“convention over configuration”。通过统一命名,应用程序可以零配置运行。

    【讨论】:

    【解决方案2】:

    这种约定的好处之一是 URL 段、控制器和模型类都具有相同的名称是很常见的。

    网址:/产品/ 控制器:产品:控制器 型号:产品

    这会导致命名冲突。所以我们约定了控制器名称后缀为“Controller”以避免这种冲突。但是,您可以通过我们的可扩展性 API 覆盖此行为。

    【讨论】:

    • 实际上 Phil... 通过 REST,这些 URL 段应该命名集合,这意味着控制器通常是复数形式,如 ProductsController (/products/1) 而模型实体是单数形式,如 Product 因为集合显示视图将使用模型IEnumerable<Product>。所以无论如何也不会有冲突。但是约定很好,因为它也用于其他地方(没有人抱怨),如在属性、集合、字典、列表等中。这些类型也按惯例使用后缀。当然是出于开发可用性的原因。
    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    相关资源
    最近更新 更多