在 ASP.NET MVC 中, Controller 方法可以被修饰为接受特定的 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)

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

看起来 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 枚举类型)?

最佳答案

我不认为这两种实现之间有很大的不同,但鉴于

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

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

关于asp.net-mvc - 哪个使用 : "AcceptGet, AcceptPost"(MvcContrib) vs. AcceptVerbs(ASP.NET Mvc)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/816456/

10-10 03:53