asp.net mvc中的后期操作约定

时间:2010-01-21 10:41:07

标签: asp.net-mvc post

我看到惯例是让post操作与页面的名称相同,但是放一个:

[AcceptsVerb.HTTPVerbs.Post]

关于行动方法。

将帖子操作作为另一个名称是否有任何问题。

因此,如果我有一个名为Edit的页面,则Edit操作将显示该页面,而“Update”操作将发布编辑更改。与编辑“获取”和编辑“发布”

相比,这似乎更清晰 如果这纯粹是一种常规的事情,或者这里是否存在对错,

想让人们对此有所了解?

4 个答案:

答案 0 :(得分:2)

使用不同的名称需要您编写更多代码。

如果您的GET和POST操作具有相同的名称,则可以使用以下代码编写视图:

<% Html.BeginForm() %>

......而不是......

<% Html.BeginForm("PostActionName") %>

同样,您的帖子操作可能如下所示:

{
    if (!ModelState.IsValid) 
    {
        return View(Model);
    }
    // ...

...而不是:

{
    if (!ModelState.IsValid) 
    {
        return View("GetActionName", Model);
    }
    // ...

正如你所看到的,给行动起了同样的名义并没有压倒性的优势;这只是一个方便的问题。 GET和POST操作具有相同名称的假设会在框架中的许多不同位置弹出。你总是可以覆盖它,但它就是这样:覆盖一个假设。

答案 1 :(得分:1)

我认为这纯粹是惯例,拥有不同的动作后名称并没有错。

MVC默认情况下返回一个与操作同名的视图,并且假设您要获取或发布相同的视图。
此外,更改操作名称通常会更改URL,但如果您不关心这一点,请使用您的操作名称 我已经使用了动作名称/目的的组合,这取决于当时看起来有意义的内容。

答案 2 :(得分:0)

在我看来,如何命名您的行为并不重要,但它应该在您的站点/应用程序中保持一致。我认为,如果您将REST用作应用程序的API,那么您可能希望执行/system/accounts/user/34/addNote/之类的操作,而不是更新整个用户或使用其他控制器来记录笔记。

答案 3 :(得分:0)

除非您正在创建RESTfull应用程序,否则只要您的命名约定在整个应用程序中保持一致,它就无关紧要。

Stephen Walther has a good article关于命名基本CRUD操作的命名约定。