使用哪个:"AcceptGet,AcceptPost"(MvcContrib)与AcceptVerbs(ASP.NET Mvc)?

Chu*_*way 4 asp.net-mvc

在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)
Run Code Online (Sandbox Code Playgroud)

AcceptVerbs(ASP.NET Mvc)

/// <returns></returns>
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult EditRequest(string id)
Run Code Online (Sandbox Code Playgroud)

可以在此处找到MvcContrib项目的AcceptPost的文档.

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

使用AcceptVerbs发布的ASP.NET MVC采用枚举:

[Flags]
public enum HttpVerbs
{
    Delete = 8,
    Get = 1,
    Head = 0x10,
    Post = 2,
    Put = 4
}
Run Code Online (Sandbox Code Playgroud)

我的问题是哪一个是更好的实现,AcceptGet/AcceptPost或AcceptVerbs(使用HttpVerbs枚举类型)?

Ste*_*ock 5

我不认为两种实现之间存在很大差异,但考虑到这一点

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult EditRequest(string id)
Run Code Online (Sandbox Code Playgroud)

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