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

时间:2016-03-15 12:23:19

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

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

我看到很多examples like this one重载"创建"做两份工作。这是一个片段:

    //
    // 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();
        }
    }

我个人发现,当重载做完全不同的事情时,这会让我感到困惑,这取决于我决定选择哪个。所以你怎么看 ?它真的是最佳实践"滚动那样?

3 个答案:

答案 0 :(得分:3)

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

有关操作命名的更多指导,请参阅Action Naming Convention

答案 1 :(得分:1)

I personally find it confusing when overloads do completely different things depending on which I decide to choose.

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

答案 2 :(得分:0)

是的,如果它是该视图的POST方法,那么你应该坚持使用相同的名称。唯一不应遵循此约定的情况是,如果由于某种原因对同一视图有多个不同的POST方法,或者如果您有多个不同视图使用的POST方法。

提供标准示例:

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

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