我有两个动作,一个是带有此签名的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]
?
答案 0 :(得分:1)
您无法同时使用POST和GET,因为您的Action将接受任何HTTP方法的请求。 尝试使用AcceptVerbsAttribute来限制RouteTable中的HTTP方法。 https://msdn.microsoft.com/en-us/library/system.web.mvc.acceptverbsattribute(v=vs.118).aspx