在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
http://weblogs.asp.net/stephenwalther/archive/2008/06/27/asp-net-mvc-tip-11-use-standard-controller-action-names.aspx
摘要:在这个Tip中,Stephen Walther建议你为控制器操作使用标准的名字,这样可以使你的代码对其他开发者更明晰。
采用命名约定可以使其他开发者——以及你自己将来——更容易阅读你的代码。命名约定还可以为你节省时间,可以避免费力去讨论“正确的”命名方式。在这个Tip中,我建议为ASP.NET MVC控制器操作使用标准的名字。
下面这个表格列出了控制器操作的标准名字:
我的这些操作名字(非常粗略)是基于Adam Tybor在其MvcContrib项目的Simply Restful Route Handler中使用的命名约定的。该项目位于:
http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=SimplyRestfulRouting&referringTitle=Documentation
然而,Adam Tybor的约定和我这里建议的有着显著的不同。下面我来介绍一下二者的区别。
首先,Adam Tybor利用不同的HTTP谓词来指出要执行那个控制器操作(他有“REST癖”,he is being a REST purist)。例如,Adam Tybor建议同一个URL既用于删除也用于更新一个资源:
/Product/34
当使用HTTP PUT请求该URL时,将更新一条现有记录。当使用HTTP DELETE请求相同的URL时,将删除一条现有记录。Adam Tybor提出的原因是有意义的。他的建议和这些HTTP谓词的目的是统一的。然而,Adam Tybor得难以不能和默认的ASP.NET MVC路由一起工作。因此,我建议你在进行删除和更新时使用明确的URL:
/Product/Update/34 /Product/Delete/34
如果你使用这些命名约定,你将可以使用默认的ASP.NET MVC路由表。
我这里建议的控制器操作命名约定和我所见过的其他命名约定之间的另外一个重要区别在于,为创建一个新的资源这样一个操作所取的名字。我见过在创建新的资源时有人用过下面这样的操作名字:
/Product/New /Product/Create
通常,New操作用于显示用于创建新资源的表单,而Create操作实际执行数据库插入操作。
问题在于使用New作为操作名字可能会和C#以及Visual Basic .NET关键字冲突。当在Visual Basic .NET应用程序中创建一个名为New的控制器操作时,您必须总要记得将其名字转义为[New]。持续地转义一个名字很快就会变得枯燥,而且对于那些不理解这个方括号的含义的人来说,这样会引起混淆。因此,我建议使用Create和Insert对来代替New和Create对。
你可能已经注意到了,我在试图让操作和(实际)执行的数据库操作中的SQL语句名字对应起来。因此,下面的URL应该是用于显示表单的:
/Product/Create /Product/Edit/1 /Product/Destroy/1
而下面的URL应该是用于执行数据库操作的:
/Product/Insert /Product/Update/1 /Product/Delete/1
对命名约定提出建议总是有风险的,因为开发者对于如何正确地取名总是具有强烈的个人意见。然而,我希望这篇Tip能够作为你开发一款命名约定的起点。
------
本文没有代码。广告还是.NET正则表达式库,http://regex-lib.net。 |
请发表评论