ASP.NET MVC - [HttpPost/HttpGet]与[AcceptVerbs(HttpVerbs.Post/Get)]的区别

46

这些东西是相同的吗?

[HttpPost/HttpGet] vs. [AcceptVerbs(HttpVerbs.Post/Get)]

如果没有,那么有什么不同吗?

2个回答

57

是的,完全一样。 [HttpPost/HttpGet] 在 ASP.NET MVC 2 中引入,以减少我们需要输入的按键次数 :-) 如果您正在编写新代码,仍然可以使用 [AcceptVerbs(HttpVerbs.Post/Get)] 并且行为相同,尽管我建议优先使用前者。


24

是的,它们是相同的,但是在更新的版本中,您只能使操作接受一个动词的请求。使用[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get | HttpVerbs.Delete)],您可以接受2个或更多个动词。此外,您还可以使用[AcceptVerbs]来接受不属于HttpVerbs枚举的其他动词 - 例如[AcceptVerbs("Trace")]

我不确定为什么您需要使用此功能,但如果您希望,您是可以使用它的。


1
我正在处理一个问题 -- 我刚刚发现一个只接受POST动词的更新端点。为了将其改为PUT,我必须在几个版本中同时接受这两个动词,直到所有客户端都得到更新。 - Eric Lloyd
+1 for 你可以使用[AcceptVerbs]来接受不属于HttpVerbs枚举的其他动词,例如[AcceptVerbs("Trace")] - mmushtaq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接