2012-05-04 3 views
7

Was ist das definierte Verhalten für Form in ASP.NET/MVC verbindlich, wenn Sie ein Formular Post und ihre Aktion haben Abfrageparameter und Sie Formulardaten?Modell auf POST mit Query-String UND Form Bindungsparameter

Zum Beispiel:

<form action="my/action?foo=1" method="post"> 
    <input type="hidden" name="bar" value="2"> 
</form> 

Wenn eine solche Form vorgelegt wird, sollte der Controller erhalten beide foo und bar oder nur einer von ihnen?

Antwort

7

Der Controller erhält beide Werte. Der Standardmodellbinder versucht, Übereinstimmungen für die Parameter sowohl vom URI (entweder Abfragezeichenfolge oder Routenparameter) oder vom Hauptteil (und Formulardaten werden standardmäßig unterstützt) zu finden.

0

Ich denke, es sollte in der Lage sein, beide zu bekommen. In diesem Fall würde ich ein ViewModel erstellen, das zwei String- oder int-Eigenschaften enthält, eine mit dem Namen "foo" und die andere mit "bar" und Ihr ActionResult akzeptiert das ViewModel. Sie sollten beide Werte kommen in sehen

1

Hinweis, können Sie sehen, das von Html.BeginForm Helfer unterstützt wird, Sie tun dies durch die Routevalues.

@Html.BeginForm("ActionName", "ControllerName", new { foo = "1" }) 

sie im wesentlichen die gleiche HTML als Formular-Tag erzeugt, aber ich wollte für diejenigen schreiben, die diese Frage finden und wissen wollen, wie man zusätzliche Werte, die nicht Teil des Formulars sind, mit Hilfe des BeginForm-Helfers weitergibt.

Verwandte Themen