28

是否有人为 MVC 中的操作建立了良好的命名约定?我专门研究了 ASP.net MVC,但这是一个普遍的问题。例如,我有一个显示登录屏幕 (Login) 的操作和一个处理来自该页面的登录请求 (LoginTest) 的操作。我对名字不感兴趣,我还有很多申请要写。

4

6 回答 6

46

MS 的 Rob Conery 提出了一些有用的 RESTful 风格命名动作。

* Index - the main "landing" page. This is also the default endpoint.
* List - a list of whatever "thing" you're showing them - like a list of Products.
* Show - a particular item of whatever "thing" you're showing them (like a Product)
* Edit - an edit page for the "thing"
* New - a create page for the "thing"
* Create - creates a new "thing" (and saves it if you're using a DB)
* Update - updates the "thing"
* Delete - deletes the "thing"

导致 URL 类似于 (for a forum)

* http://mysite/forum/group/list - shows all the groups in my forum
* http://mysite/forum/forums/show/1 - shows all the topics in forum id=1
* http://mysite/forums/topic/show/20 - shows all the posts for topic id=20

Rob Conery 谈 MVC 的 RESTful 架构

于 2008-09-23T10:27:10.100 回答
2

Rails 对 CRUD 操作有一个很好的操作命名约定:Rails Routing from the Outside In

HTTP Verb Path Controller#Action Used for GET /photos photos#index display a list of all photos GET /photos/new photos#new return an HTML form for creating a new photo POST /photos photos#create create a new photo GET /photos/:id photos#show display a specific photo GET /photos/:id/edit photos#edit return an HTML form for editing a photo PATCH/PUT /photos/:id photos#update update a specific photo DELETE /photos/:id photos#destroy delete a specific photo

这本质上是对Paul Shannon 答案的更新,因为他的消息来源(Rob Conery)含蓄地说他从 Rails 复制了他的列表。

于 2015-05-21T09:57:38.663 回答
1

我发现Stephen Walther 的一篇博文有助于找到一致的命名方案。他也源自 REST 风格的命名方案,他解释了一些独特的例外。

于 2008-09-23T17:31:35.090 回答
1

Stephen Walther 在ASP.NET MVC Tip #11 – Use Standard Controller Action Names上的帖子可能会澄清您关于命名约定的MVC Action命名约定...

于 2016-08-17T10:24:24.793 回答
0

内置的 Django 操作后缀为 _done。因此 LoginDone 将是处理登录的页面(在 ASP.NET MVC 驼峰式风格中)。

于 2008-09-23T00:51:56.223 回答
0

您使用哪种约定来命名 Controller Action 是相当不相关的,只要它对您来说是一致的并且易于被从事它的工作人员理解。

对于您的登录操作,LoginDone 很好,同样,ProcessLogin 也很容易理解,因此请使用您觉得舒服的约定。

就我个人而言,我可能会支持 Login 和 ProcessLogin,因为 LoginDone 在 Action 正在做什么方面可能会有点误导 - 这当然是假设 Action 正在对用户的凭据做出反应并检查它们是否有效。然后,一旦登录成功,您就可以传递到另一个名为 LoginDone 的操作,如果不是,则可以传递到 LoginFailed。

于 2008-09-23T10:19:52.177 回答