是否可以为post和get提供重复的动作名称和参数列表?

时间:2011-06-01 08:56:32

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

是否可以有2个具有相同名称和参数的动作,但一个是帖子,另一个是get?例如Delete(id)[HttpPost]Delete(id) ...我收到错误,说这是不允许的......

2 个答案:

答案 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