Подтвердить что ты не робот

Возможно ли инициировать запрос 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, который я должен использовать?

4b9b3361

Ответ 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, это не только "лучшая практика", но и единственный способ.