16 Stimmen

Ist es möglich, eine HTTP-DELETE-Anfrage aus einem HTML-Formular auszulösen?

Ich habe ein ASP.NET MVC-Projekt und ich habe eine einzelne Aktion, die GET, POST und DELETE-Anforderungen akzeptiert. Jede Art von Anforderung wird über Attribute auf meinen Controllern gefiltert Action Methoden.

[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)

Ich habe meine GraphAdd Methode funktioniert sehr gut. Was ich herauszufinden versuche, ist, wie ich eine HTML-Datei erstellen kann. <form /> o <a /> (Link), die den Browser veranlasst, eine HTTP-Löschanforderung durchzuführen und meine GraphDelete-Methode auszulösen.

Wenn es eine Möglichkeit gibt, dies zu tun, kann jemand einige Beispiel-HTML posten und wenn verfügbar die MVC HtmlHelper-Methode, die ich verwenden sollte?

13voto

Owen Punkte 79611

Ich glaube nicht, dass dies möglich ist. Das method-Attribut von Formularelementen in HTML4 & XHTML 1.0 akzeptiert nur GET oder POST. Außerdem verweigern die Standardkonfigurationen der meisten Webserver DELETE- und PUT-Anfragen. Wenn Sie Ihren Webserver so konfiguriert haben, dass er Methoden wie PUT / DELETE zulässt (wie es WebDav tut), könnten Sie dann Ihre eigene HTTP-Anfrage erstellen:

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

und entsprechend zu behandeln. es gibt jedoch keine Möglichkeit, dies über ein aktuelles HTML-Formular zu tun. interessehalber gibt es einige Diskussion für die DELETE-Unterstützung in HTML5.

7voto

Die Verwendung von XMLHttpRequest ist nicht nur die "beste Praxis", sondern wirklich die einzige Möglichkeit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X