Wie erstelle ich einen httppost, der dieselben Parameter von httpget erhält?

7

Ich habe einen Controller, um ein Modell (Benutzer) anzuzeigen und einen Bildschirm nur mit einer Schaltfläche zum Aktivieren zu erstellen. Ich möchte keine Felder in der Form haben. Ich habe bereits die ID in der URL. Wie kann ich das erreichen?

    
waldecir 13.12.2010, 13:03
quelle

5 Antworten

2

Sie könnten ein verstecktes Feld innerhalb des Formulars verwenden:

%Vor%

oder übergeben Sie es in der Aktion des Formulars:

%Vor%     
Darin Dimitrov 13.12.2010, 13:06
quelle
19

Verwenden Sie das [ActionName] -Attribut - auf diese Weise können Sie die URLs scheinbar auf den gleichen Ort zeigen, aber abhängig von der HTTP-Methode verschiedene Aktionen ausführen:

%Vor%

Alternativ können Sie die HTTP-Methode im Code überprüfen:

%Vor%     
Knaģis 02.11.2012 14:07
quelle
2

Ein wenig spät zur Party, aber ich fand eine einfachere Lösung für das, was ich denke, ist ein ziemlich häufiger Anwendungsfall, wo Sie auf GET ("Sind Sie sicher, dass Sie wollen bla bla bla ? ") und dann mit denselben Argumenten auf POST reagieren.

Die Lösung: Verwenden Sie optionale Parameter . Keine Notwendigkeit für irgendwelche versteckten Felder und so.

Hinweis: Ich habe das nur in MVC3 getestet.

%Vor%

Abschließend können Sie string.Empty anstelle von "" nicht verwenden, da es sich um eine Kompilierzeitkonstante handeln muss. Und es ist ein großartiger Ort, um lustige Kommentare für jemand anderen zu finden:)

    
Austin Thompson 03.05.2012 19:22
quelle
1

Mein Ansatz besteht nicht darin, einen unbenutzten Parameter hinzuzufügen, da dies scheinbar Verwirrung stiften würde und im Allgemeinen eine schlechte Praxis ist. Stattdessen füge ich "Post" an meinen Aktionsnamen an:

%Vor%     
John Zumbrum 18.07.2012 16:15
quelle
0

Der einfachste Weg für eine solche einfache Situation besteht darin, dem Absenden-Button einen Namen zu geben und einen Check-in-Vorgang durchzuführen, wenn er einen Wert hat oder nicht. Wenn es den Wert hat, dann postet es Aktion, wenn nicht, dann erhält es Aktion:

%Vor%

Für Cs können Sie get und post-Controller-Methoden in einem kombinieren:

%Vor%     
Andrey Tagaew 13.12.2010 13:49
quelle