首页 > 代码库 > [HttpPost]和[AcceptVerbs(HttpVerbs.Post)]区别

[HttpPost]和[AcceptVerbs(HttpVerbs.Post)]区别

1.共同点:[HttpPost][AcceptVerbs(HttpVerbs.Post)]都是只接受POST请求过来的数据。

2.不同点:
在MVC中如果想一个action既可以回应POST请求也可以回应GET请求那么我们应该怎么做呢?
首先[HttpPost][HttpGet]是不能同时存在一个action上
但是[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]可以

正确写法:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]或者[AcceptVerbs("POST", "GET"、"OPTIONS")]
public ActionResult Index()
{
    ........................
}

错误写法:
[HttpPost][HttpGet]
public ActionResult Index()
{
    ........................
}

!!!注:

HTTP规范定义了8种可能的请求方法:
GET                 检索URI中标识资源的一个简单请求
HEAD               与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
POST                服务器接受被写入客户端输出流中的数据的请求
PUT                 服务器保存请求数据作为指定URI新内容的请求
DELETE            服务器删除URI中命名的资源的请求
OPTIONS          关于服务器支持的请求方法信息的请求
TRACE             Web服务器反馈Http请求和其头标的请求
CONNECT        已文档化但当前未实现的一个方法,预留做隧道处理

[HttpPost]和[AcceptVerbs(HttpVerbs.Post)]区别