Alles schön und gut, aber Sie haben sich trotzdem entschieden, eine andere Frage zu beantworten als die, die gestellt wurde. Und da löschbare Tinte tatsächlich ein brauchbares Produkt ist, das im industriellen Maßstab hergestellt wird ...
Winfield Trail,
2
FWIW, ich sympathisiere mit Ihrer Antwort und es ist das, was ich persönlich lieber in Web-Apps sehen würde, die ich pflegen muss. Ich erkläre nur die Ablehnung - die ich übrigens nicht verlassen habe. ;)
Winfield Trail
@ rybo111 Ein Grund, warum Sie möglicherweise nicht verwenden möchten button: IE erzwingt 3D-Druckeffekte bei der Verwendung button, was bei Verwendung leicht vermieden werden kann a. Wenn Sie Ihre Schaltfläche mit formatieren display: inline-table, aist die Verwendung die einzige Möglichkeit, diesen Effekt zu vermeiden, da die normale Problemumgehung von position: relativenicht funktioniert.
Paya
Dies ist jedoch eine vermeidbare Ausrede, die Schaltfläche nicht zum Senden zu verwenden.
Ich habe hier nur einige Beispiele durchgesehen und nicht gesehen, dass die MVC dachte, es würde nicht schaden, sie zu posten.
Dann würde ich bei Ihrer Aktion im Controller einfach <HTTPPost>oben drauf setzen. Ich glaube, wenn Sie es nicht <HTTPGET>oben drauf haben, würde es immer noch funktionieren, aber es fühlt sich ein bisschen sicherer an, es explizit dort zu platzieren.
Es scheint wirklich keine Möglichkeit zu geben, das <a href= ..in eine POST-Methode zu täuschen . Da Sie jedoch Zugriff auf CSS einer Seite haben, kann dies durch die Verwendung eines Formulars ersetzt werden.
Leider ist die offensichtliche Art, die Schaltfläche in CSS nur als Ankertag zu gestalten, nicht browserübergreifend kompatibel, da verschiedene Browser <button value= ...unterschiedlich behandeln .
Beachten Sie, dass diese Methode einen Nebeneffekt hat, der neben 'parameter: blaah' auch 'delete: Delete' als überschüssige Parameter in POST liefert.
Sie möchten für eine Schaltfläche das Wertattribut und die Schaltflächenbezeichnung zwischen den Tags beibehalten (in diesem Fall 'Löschen'), da (wie oben angegeben) einige Browser einen und einige einen anderen als Schaltflächenbezeichnung anzeigen.
Antworten:
Kein JavaScript erforderlich, wenn Sie stattdessen eine Schaltfläche verwenden:
<form action="your_url" method="post"> <button type="submit" name="your_name" value="your_value" class="btn-link">Go</button> </form>
Sie können eine Schaltfläche so gestalten, dass sie wie ein Link aussieht , zum Beispiel:
.btn-link { border: none; outline: none; background: none; cursor: pointer; color: #0000EE; padding: 0; text-decoration: underline; font-family: inherit; font-size: inherit; }
quelle
a
Tag verwendet.button
: IE erzwingt 3D-Druckeffekte bei der Verwendungbutton
, was bei Verwendung leicht vermieden werden kanna
. Wenn Sie Ihre Schaltfläche mit formatierendisplay: inline-table
,a
ist die Verwendung die einzige Möglichkeit, diesen Effekt zu vermeiden, da die normale Problemumgehung vonposition: relative
nicht funktioniert.Sie müssen dafür Javascript verwenden.
<form id="form1" action="showMessage.jsp" method="post"> <a href="javascript:;" onclick="document.getElementById('form1').submit();"><%=n%></a> <input type="hidden" name="mess" value=<%=n%>/> </form>
quelle
Sie müssen die Javascript-
submit
Funktion für Ihrform
Objekt verwenden. Schauen Sie sich andere Funktionen an .<form action="showMessage.jsp" method="post"> <a href="javascript:;" onclick="parentNode.submit();"><%=n%></a> <input type="hidden" name="mess" value=<%=n%>/> </form>
quelle
Wenn Sie MVC verwenden, um dies zu erreichen, müssen Sie so etwas tun
<form action="/ControllerName/ActionName" method="post"> <a href="javascript:;" onclick="parentNode.submit();"><%=n%></a> <input type="hidden" name="mess" value=<%=n%>/> </form>
Ich habe hier nur einige Beispiele durchgesehen und nicht gesehen, dass die MVC dachte, es würde nicht schaden, sie zu posten.
Dann würde ich bei Ihrer Aktion im Controller einfach
<HTTPPost>
oben drauf setzen. Ich glaube, wenn Sie es nicht<HTTPGET>
oben drauf haben, würde es immer noch funktionieren, aber es fühlt sich ein bisschen sicherer an, es explizit dort zu platzieren.quelle
Es scheint wirklich keine Möglichkeit zu geben, das
<a href= ..
in eine POST-Methode zu täuschen . Da Sie jedoch Zugriff auf CSS einer Seite haben, kann dies durch die Verwendung eines Formulars ersetzt werden.Leider ist die offensichtliche Art, die Schaltfläche in CSS nur als Ankertag zu gestalten, nicht browserübergreifend kompatibel, da verschiedene Browser
<button value= ...
unterschiedlich behandeln .Incorrect: <form action='actbusy.php' method='post'> <button type='submit' name='parameter' value='One'>Two</button> </form>
Das obige Beispiel zeigt in FireFox "Zwei" und "Parameter senden: Eins", während es in IE8 "Eins" und "Parameter: Eins" zeigt.
Der Weg dahin besteht darin, versteckte Eingabefelder für die Übermittlung von Daten und die Schaltfläche nur für die Übermittlung zu verwenden.
<form action='actbusy.php' method='post'> <input class=hidden name='parameter' value='blaah'> <button type='submit' name='delete' value='Delete'>Delete</button> </form>
Beachten Sie, dass diese Methode einen Nebeneffekt hat, der neben 'parameter: blaah' auch 'delete: Delete' als überschüssige Parameter in POST liefert.
Sie möchten für eine Schaltfläche das Wertattribut und die Schaltflächenbezeichnung zwischen den Tags beibehalten (in diesem Fall 'Löschen'), da (wie oben angegeben) einige Browser einen und einige einen anderen als Schaltflächenbezeichnung anzeigen.
quelle
<button value="Bad">Good</button>
Ich habe es gerade in IE7 versucht und es wird "Gut" angezeigt.