【问题标题】:Which to use: "AcceptGet, AcceptPost"(MvcContrib) vs. AcceptVerbs(ASP.NET Mvc)?使用哪个:“AcceptGet,AcceptPost”(MvcContrib)与 AcceptVerbs(ASP.NET Mvc)?
【发布时间】:2009-05-03 06:22:21
【问题描述】:

在 ASP.NET MVC 中,控制器方法可以被修饰为接受特定的 HTTP 方法(Get、Post、Get.. 等)。在 MvcContrib 和 ASP.NET MVC 之间有 3 个类:“AcceptGet、AcceptPost”和 AcceptVerbs。这三个:“AcceptGet,AcceptPost”和 AcceptVerbs 做同样的事情。它们指定允许哪些 http 方法访问操作/方法。

AcceptGet 和 AcceptPost 在 MvcContrib 中。而 AcceptVerbs 是 Mvc 框架的本机。哪个更好用?

AcceptGet/AcceptPost (MvcContrib)

/// <returns></returns>
[AcceptGet]
public ActionResult Profile(string id)

AcceptVerbs(ASP.NET Mvc)

/// <returns></returns>
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult EditRequest(string id)

可以在here 找到 MvcContrib 项目的 AcceptPost 文档。

AcceptGet 和 AcceptPost 似乎是为了填补早期版本的 ASP.NET Mvc 框架之一的空白而创建的。 AcceptGet 和 AcceptPost 类提供了强类型的 HttpMethod 属性。

ASP.NET MVC 与接受枚举的 AcceptVerbs 一起发布:

[Flags]
public enum HttpVerbs
{
    Delete = 8,
    Get = 1,
    Head = 0x10,
    Post = 2,
    Put = 4
}

我的问题是,AcceptGet/AcceptPost 还是 AcceptVerbs(带有 HttpVerbs 枚举类型)哪个更好?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    我认为这两种实现之间没有太大区别,但考虑到这一点

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult EditRequest(string id)
    

    现在是框架的一部分,我总是使用它。两者都是强类型,因此没有真正的区别,并且 HttpVerbs 枚举包括 MVC contrib 版本中没有的 Delete、Head 和 Put。

    【讨论】:

      【解决方案2】:

      从 ASP.Net MVC 2 Preview 1 发布开始,以下属性位于核心 MVC 框架中 - HttpPost、HttpGet、HttpDelete、HttpPut。当然,AcceptVerbs 属性仍然受支持。

      因此,如果您使用的是 MVC 2,那么您可以使用这些新属性,而不需要 AcceptPost 和 AcceptGet 的 MVC Contrib 版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 2011-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        相关资源
        最近更新 更多