Я пишу реализацию веб-приложения ASP.NET, и когда я вызываю конкретный URL-адрес, я хочу вызвать другой метод действия в зависимости от того, является ли запрос GET или POST.
Я пробовал два разных подхода - в первую очередь я начинаю с контроллера со следующими методами действий:
<HttpGet>
Public Function Index() as ActionResult
...
End Function
<HttpPost>
Public Function Index() as ActionResult
...
End Function
... а затем регистрация маршрута, который устанавливает .action в "Index" для URL-адреса. Это не компилируется, потому что две функции имеют одинаковую сигнатуру.
Затем я попытался изменить имя подпрограммы Post на «Subscribe», но, конечно, для этого мне потребовалось бы указать два разных маршрута в таблице маршрутизации (чтобы указать имя нового метода действия). Если я это сделаю, то обнаружу, что второй отменяется первым.
Теперь я подумываю вернуться к своей первоначальной идее, но предоставить ей фиктивный параметр и указать его как UrlParameter.Optional. Имея это в качестве аргумента в подпрограмме публикации, это создаст новую сигнатуру метода, что, как я ожидал, будет в порядке.
Хотя это немного пахнет грязным хаком - так что мне было интересно, как другие люди подойдут к этому?
Мартин.
Пс. Я попробовал этот грязный хакер, и он действительно работает. Тем не менее, все еще интересно услышать мнения других.