是否可以有2个具有相同名称和参数的动作,但一个是帖子,另一个是get?例如Delete(id)
和[HttpPost]Delete(id)
...我收到错误,说这是不允许的......
答案 0 :(得分:7)
是的,这是可能的。只需对一个操作使用ActionName属性:
public ActionResult Delete(int id)
{
//...
return View();
}
[HttpPost]
[ActionName("Delete")]
public ActionResult Delete_Post(int id)
{
//...
return View();
}
答案 1 :(得分:1)
你得到错误的原因是不允许的,因为C#本身会混淆。在MVC中,您可以添加属性以指定函数是HttpGet还是HttpPost,这无助于C#确定一个或另一个之间的差异。为了使2个函数具有完全相同的名称,参数列表需要不同。
正如frennky所指出的,ActionName属性在MVC中起作用,因为MVC使用别名作为进程的一部分来确定要调用的操作(以及属性,而不是参数)。
作为旁注,最好不要对GET请求进行删除操作。您不希望爬虫或其他机器人意外地碰到错误的链接:P