Можно ли вызвать запрос HTTP DELETE из формы HTML? - PullRequest
16 голосов
/ 10 ноября 2008

У меня есть проект ASP.NET MVC, и у меня есть одно действие, которое принимает запросы GET, POST и DELETE. Каждый тип запроса фильтруется через атрибуты на моих контроллерах Action методов.

[ActionName(Constants.AdministrationGraphDashboardAction),
AcceptVerbs(HttpVerbs.Post)]
public ActionResult GraphAdd([ModelBinder(typeof (GraphDescriptorBinder))] GraphDescriptor details);

[ActionName(Constants.AdministrationGraphDashboardAction),
AcceptVerbs(HttpVerbs.Delete)]
public ActionResult GraphDelete([ModelBinder(typeof (RdfUriBinder))] RdfUri graphUri)

У меня GraphAdd метод работает очень хорошо. Я пытаюсь понять, как я могу создать HTML <form /> или <a /> (ссылка), который заставит браузер выполнить запрос HTTP Delete и запустить мой метод GraphDelete.

Если есть способ сделать это, может кто-нибудь опубликовать пример HTML, и, если доступен, метод MVC HtmlHelper, который я должен использовать?

Ответы [ 2 ]

13 голосов
/ 10 ноября 2008

Я не верю, что это возможно. атрибут метода элементов формы в HTML4 и XHTML 1.0 будет принимать только GET или POST. Кроме того, стандартные конфигурации большинства веб-серверов будут отклонять запросы DELETE и PUT. предполагая, что вы настроили свой веб-сервер так, чтобы он разрешал такие методы, как PUT / DELETE (например, WebDav), вы можете создать свой собственный HTTP-запрос:

DELETE /resource.html HTTP/1.1
Host: domain.com

и обращаться с ним соответствующим образом. однако, нет способа сделать это через текущую форму HTML. ради интереса, есть некоторое обсуждение для поддержки DELETE в HTML5.

7 голосов
/ 29 мая 2009

Использование XMLHttpRequest - это не только «лучшая практика», но и единственный способ.

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