为什么在HttpGet操作上的mvc属性路由也会影响没有路由属性的HttpPost,这是一个错误吗?

时间:2015-09-08 09:13:53

标签: asp.net-mvc asp.net-mvc-routing

我有两个动作,一个是带有此签名的HttpGet:

[Route("NewsLetter/SelectEmail/{page?}")]
[HttpGet]
public ActionResult SelectEmail(int? page, string priCat, string secCat)
{
 ...
}

有一个HttpPost有这个签名:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SelectEmail(int id)
{
...
}

在为HttpGet方法设置上述路线后,我注意到HttpPost的另一种方法已停止工作,在挖掘之后我意识到HttpGet的路线{1}}也为HttpPost设置了自己,在我为其明确设置路由属性之前它没有工作:

[Route("NewsLetter/SelectEmail/{id}")]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SelectEmail(int id)
{
...
}

我想知道,这是一个错误吗?如果不是,是否有设置[HttpGet]的路由属性而不影响相应的[HttpPost]

1 个答案:

答案 0 :(得分:1)

您无法同时使用POST和GET,因为您的Action将接受任何HTTP方法的请求。 尝试使用AcceptVerbsAttribute来限制RouteTable中的HTTP方法。 https://msdn.microsoft.com/en-us/library/system.web.mvc.acceptverbsattribute(v=vs.118).aspx