Asp.net mvc ASP.NET MVC控制器方法命名的最佳实践

Asp.net mvc ASP.NET MVC控制器方法命名的最佳实践,asp.net-mvc,model-view-controller,Asp.net Mvc,Model View Controller,我对MVC几乎一无所知,所以我的问题看起来可能有点基本,但无论如何,这里的问题是:返回视图的方法和保存数据的方法的名称相同,这是一种好的做法吗 我看到很多超负荷的“创造”同时做这两项工作。下面是一个片段: 我个人发现,当重载根据我的选择做完全不同的事情时,会让人感到困惑。那你觉得呢?这样滚动真的是“最佳实践”吗 是的,在这种情况下,GET和POST通常共享相同的名称,因为它们与相同的用户操作相关 有关操作命名的更多指导,请参阅。是的,在本例中,GET和POST通常共享相同的名称,因为它们与相同的

我对MVC几乎一无所知,所以我的问题看起来可能有点基本,但无论如何,这里的问题是:返回视图的方法和保存数据的方法的名称相同,这是一种好的做法吗

我看到很多超负荷的“创造”同时做这两项工作。下面是一个片段:


我个人发现,当重载根据我的选择做完全不同的事情时,会让人感到困惑。那你觉得呢?这样滚动真的是“最佳实践”吗

是的,在这种情况下,GET和POST通常共享相同的名称,因为它们与相同的用户操作相关


有关操作命名的更多指导,请参阅。

是的,在本例中,GET和POST通常共享相同的名称,因为它们与相同的用户操作相关


有关操作命名的更多指导信息,请参阅。

我个人认为,当重载根据我选择的操作做完全不同的事情时,会让人感到困惑。


真的吗?它们都涉及同一实体(a
客户
)。您可以做的是命名任何您想要的方法,然后添加
[ActionName]
属性,这将是操作的名称。但是是的。MVC的惯例是,以相同的方式命名它们,然后根据您使用的是GET还是POST来选择其中一个。

我个人发现,当重载根据我决定选择的内容执行完全不同的操作时,会让人感到困惑。


真的吗?它们都涉及同一实体(a
客户
)。您可以做的是命名任何您想要的方法,然后添加
[ActionName]
属性,这将是操作的名称。但是是的。MVC惯例是以相同的方式命名它们,然后根据您使用的是GET还是POST来选择一个或另一个。

是的,如果该视图使用POST方法,则应使用相同的名称。如果出于某种原因,同一视图有多个不同的POST方法,或者如果有多个不同视图使用的POST方法,那么您就不应该遵循此约定

提供一个标准示例:

您有一个用于创建用户的创建视图。有一个HTTPGET Create()操作和一个HTTPPOST Create()操作用于将用户详细信息发布到服务器。在这种情况下,您应该使用相同的名称


您有一个仪表板视图,其中显示数据库中的一些数据。您有一些javascript,它使用ajax从服务器检索数据。在这种情况下,您可以考虑使用不同的名称。例如,GetData()

是如果它是该视图的POST方法,则应使用相同的名称。如果出于某种原因,同一视图有多个不同的POST方法,或者如果有多个不同视图使用的POST方法,那么您就不应该遵循此约定

提供一个标准示例:

您有一个用于创建用户的创建视图。有一个HTTPGET Create()操作和一个HTTPPOST Create()操作用于将用户详细信息发布到服务器。在这种情况下,您应该使用相同的名称


您有一个仪表板视图,其中显示数据库中的一些数据。您有一些javascript,它使用ajax从服务器检索数据。在这种情况下,您可以考虑使用不同的名称。例如GetData()

一个是GET,另一个是POST!(千万不要在MVC中使用
FormCollection
)是的,这不仅仅是关于重载,它的数据注释还告诉您正在执行什么样的操作,比如[HttpGet]和[HttpPost],最好将控制器/操作视为它们自己的东西,而不仅仅是类/方法。虽然我可能同意你的观点,让重载在普通类中做一些不同的事情,但在控制器操作的情况下,实际上非常推荐这种模式。一个是GET,另一个是POST!(千万不要在MVC中使用
FormCollection
)是的,这不仅仅是关于重载,它的数据注释还告诉您正在执行什么样的操作,比如[HttpGet]和[HttpPost],最好将控制器/操作视为它们自己的东西,而不仅仅是类/方法。虽然我可能同意您的看法,让重载在普通类中执行一些不同的操作,但在控制器操作的情况下,实际上非常推荐使用这种模式。
    //
    // GET: /Customer/Create> 
    public ActionResult Create()
    {
        return View();
    } 

    //
    // POST: /Customer/Create> 
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(FormCollection collection)
    {
        try
        {
            // TODO: Add insert logic here> 
            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }