Возможно ли инициировать запрос HTTP DELETE из HTML-формы?
У меня есть проект 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 />
(link), который заставит браузер выполнить запрос HTTP-удаления и запустить мой метод GraphDelete.
Если есть способ сделать это, кто-то может отправить некоторый образец HTML и, если он доступен, метод MVC HtmlHelper, который я должен использовать?
Ответы
Ответ 1
Я не считаю, что это возможно. атрибут метода элементов формы в HTML4 и XHTML 1.0 будет принимать только GET или POST. кроме того, стандартные конфигурации большинства веб-серверов будут отклонять запросы DELETE и PUT. предполагая, что вы настроили ваш веб-сервер, чтобы разрешить такие методы, как PUT/DELETE (например, WebDav), вы могли бы создать свой собственный HTTP-запрос:
DELETE /resource.html HTTP/1.1
Host: domain.com
и обрабатывать его соответствующим образом. однако нет способа сделать это с помощью текущей HTML-формы. для интереса существует некоторое обсуждение для поддержки DELETE в HTML5.
Ответ 2
Используя XMLHttpRequest, это не только "лучшая практика", но и единственный способ.