Можно ли иметь одинаковые имена действий и список параметров для публикации и получения? - PullRequest
6 голосов
/ 01 июня 2011

возможно ли иметь 2 действия с одинаковым именем и параметрами, но одно сообщение, другое получить?например, Delete(id) и [HttpPost]Delete(id) ... я получаю сообщение об ошибке, говорящее, что это не разрешено ...

Ответы [ 2 ]

7 голосов
/ 01 июня 2011

Да, это возможно.Просто используйте атрибут ActionName для одного действия:

        public ActionResult Delete(int id)
        {
            //...
            return View();
        }

        [HttpPost]
        [ActionName("Delete")]
        public ActionResult Delete_Post(int id)
        {
            //...
            return View();
        }
1 голос
/ 14 июля 2011

Причина, по которой вы получаете сообщение об ошибке, заключается в том, что сам C # запутался. В то время как в MVC вы можете добавить атрибуты, чтобы указать, является ли функция HttpGet или HttpPost, это не помогает C # определить разницу между одним или другим. Чтобы иметь 2 функции с одинаковым именем, список параметров должен быть другим.

Как указал frennky, атрибут ActionName работает в MVC, потому что MVC использует псевдонимы как часть процесса для определения, какое действие вызывать (наряду с атрибутами, но не параметрами).

Как примечание, вероятно, лучше не использовать действие Delete для запроса GET. Вы не хотите, чтобы сканер или другой бот случайно нажал не на ту ссылку: P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...