行动命名公约

时间:2008-09-23 00:47:25

标签: asp.net-mvc model-view-controller

有人在MVC中建立了良好的行动命名约定吗?我特别关注ASP.net MVC,但这是一个普遍的问题。例如,我有一个显示登录屏幕(Login)的操作和一个处理该页面登录请求的操作(LoginTest)。我并不热衷于这些名字,我还有很多应用程序要写。

6 个答案:

答案 0 :(得分:40)

MS的Rob Conery为行动提出了一些有用的REST风格命名。

* 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"

会产生(对于论坛)

的网址
* 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 on RESTful Architecture for MVC

答案 1 :(得分:1)

我发现blog post by Stephen Walther对于找到一致的命名方案非常有用。他也来自REST风格的命名方案,他解释了一些独特的例外。

答案 2 :(得分:1)

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's answer的更新, 因为他的来源(Rob Conery)隐含地说他从Rails复制了他的名单。

答案 3 :(得分:0)

内置的Django动作后缀为_done。所以LoginDone将是处理Login的页面(在ASP.NET MVC驼峰案例样式中)。

答案 4 :(得分:0)

用于Controller Action命名的惯例是相当无关紧要的,只要它对您来说是一致的并且易于理解。

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

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

答案 5 :(得分:0)

斯蒂芬·沃尔特斯在ASP.NET MVC Tip #11 – Use Standard Controller Action Names上的帖子可能会澄清你对MVC Action命名惯例的命名约定......