asp.net-mvc - 命名约定 - Controller 的一项规则,模型和 View 没有规则

标签 asp.net-mvc model-view-controller naming-conventions

在 ASP.NET MVC 中, Controller 存在于名为 Controllers 的文件夹中。他们的名字必须以Controller结尾否则事情就行不通了(您会收到 HTTP 404 错误)。

但是,模型名称不必以 Model 结尾和 View 名称不必以 View 结尾.

这似乎不一致......为什么(从 MVC 或设计的角度) Controller 名称必须结束 Controller ?

其他MVC框架有这个要求吗?

编辑

由于这似乎是惯例,我不主张反对它(参见 Convention over Configuration !),但我想了解其背后的原因。

最佳答案

Controller 约定是这样路由可以轻松找到 Controller 而无需额外配置。添加所需的 Controller 结尾可以降低您通过 MVC 路由意外暴露对象的可能性。

View 也有一个内置的约定。默认情况下, View 应位于以您的 Controller 命名的文件夹中,并与调用它们的操作命名相同,这使您的操作中的方法调用 View() 无需指定 View 即可工作。我经常发现自己无论如何都要指定 View ,但是如果您正在寻找一种约定,这绝对是框架鼓励的约定。

从模型的角度来看,您是对的,没有标准约定。这样做的原因是因为 ASP.NET MVC 框架从不直接接触模型。它需要一个约定让 Controller 从路由中找到它们,它需要一个约定让 View 从 Controller 中找到它们……但是模型只能从 Controller 中的逻辑访问,因此框架不需要知道它们.

话虽如此,我已经看到大多数人构建他们的模型,就像他们在 MVC 之前构建他们的实体或域模型一样。如果您使用的是事件记录模式,则将模型命名为与它们映射到的表相对应,如果您更关注域,则将模型命名为与它们正在建模的域的部分相对应。此外,我看到越来越多的人创建了一组 View 模型,这些模型仅用于向 UI 呈现数据,并且是通过从域中的各种模型中提取部分来创建的。模型绝对是 ASP.NET MVC 中最不自以为是的部分,但这对 imo 来说是一件好事,因为人们在这个领域有非常不同的工作方式。

关于asp.net-mvc - 命名约定 - Controller 的一项规则,模型和 View 没有规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/759617/

相关文章:

c# - Process.Start 权限 - 不会在 iis7 服务器上执行

javascript - 如何从js显示ValidationMessageFor

asp.net - 从 MVC Controller 返回不同的 View

python - Python 类引用的命名约定是什么

c# - 在 Reporting Services 中重用来自 MVC 应用程序 (DLL) 的业务逻辑

c# - 用于映射的 Automapper 与 Dapper

django - 在我的应用程序中放置域对象的位置

ruby-on-rails - 是否有相当于 Grails 的 Rails 命令/功能 "rake routes"?

java - Java 中对象的命名约定

naming-conventions - 这是什么命名约定?