[AcceptVerbs(HttpVerbs.Post)]和[HttpPost]有什么区别?

Lor*_*nzo 79 asp.net-mvc http-get http-post asp.net-mvc-2

我可以用[AcceptVerbs(HttpVerbs.Post)]/[AcceptVerbs(HttpVerbs.Get)]装饰一个动作

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(string title)
{
    // Do Something...
}
Run Code Online (Sandbox Code Playgroud)

或者使用[HttpPost]/[HttpGet]属性

[HttpPost]
public ActionResult Create(string title)
{
    // Do Something...
}
Run Code Online (Sandbox Code Playgroud)

他们不一样吗?

Rud*_*ppa 193

[HttpPost]是简写[AcceptVerbs(HttpVerbs.Post)].唯一的区别是你不能[HttpGet, HttpPost]在同一个动作上一起使用(和类似).如果您希望操作响应GET和POST,则必须使用[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)].

  • 这比接受的答案更正确,信息量更大. (20认同)
  • 我更喜欢使用[HttpPost]和[HttpGet]。**当我需要它们来执行一项操作时:不要使用任何**(因为您不需要 PUT、DELETE 或其他操作) (2认同)
  • @CodeChief一个快速思考的实验将澄清为什么它的方式......`AcceptVerbs`属性采用单个Flags参数.你可以通过Orting来设置多个标志.`[HttpPost]`只是`[AcceptVerbs(HttpVerbs.Post)]的缩写.如果你使用简写,没有OR标志可用的机制; 这就是为什么AcceptVerbs仍然存在(超出向后兼容性的原因). (2认同)

Mat*_*ela 55

没有.一个是另一个的简写.