webentwicklung-frage-antwort-db.com.de

ASP.NET MVC 3 Rasierer: Daten von View a Controller an

Ich bin in allen Bereichen .NET brandneu. Ich habe eine sehr einfache Webseite mit einem HTML-Formular. Ich möchte, dass "onsubmit" die Formulardaten von der Ansicht an den Controller sendet. Ich habe ähnliche Posts zu diesem Thema gesehen, aber keiner hat Antworten mit der neuartigen Razor-Syntax. Was mache ich mit 'onsubmit' und wie kann ich vom Controller aus auf die Daten zugreifen? Vielen Dank!!

10
Kyle M

Sie können Ihre Ansichtssteuerelemente, die Sie übergeben möchten, in Html.Beginform einschließen.

Zum Beispiel:

@using (Html.BeginForm("ActionMethodName","ControllerName"))
{
 ... your input, labels, textboxes and other html controls go here

 <input class="button" id="submit" type="submit" value="Submit" />

}

Wenn die Schaltfläche "Senden" gedrückt wird, wird alles, was sich in diesem Beginform befindet, an Ihre "ActionMethodName" -Methode des Controllers "ControllerName" übergeben.

Auf der Controllerseite können Sie auf alle empfangenen Daten wie folgt zugreifen:

public ActionResult ActionMethodName(FormCollection collection)
{
 string userName = collection.Get("username-input");

}

das obige Erfassungsobjekt enthält alle Ihre Eingabeeinträge, die wir aus dem Formular übermittelt haben. Sie können über den Namen auf sie zugreifen, genauso wie Sie auf jedes Array zugreifen würden: Collection ["blah"] Oder collection.Get ("blah")

Sie können Parameter auch direkt an Ihre Steuerungen übergeben, ohne die gesamte Seite mit FormCollection zu senden:

@using (Html.BeginForm("ActionMethodName","ControllerName",new {id = param1, name = param2}))
{
 ... your input, labels, textboxes and other html controls go here

 <input class="button" id="submit" type="submit" value="Submit" />

}

public ActionResult ActionMethodName(string id,string name)
{
 string myId = id;
 string myName = name;

}

Oder Sie können beide Methoden kombinieren und zusammen mit der Formcollection bestimmte Parameter übergeben. Es liegt an dir.

Ich hoffe es hilft.

bearbeiten: Während ich schrieb, haben andere Benutzer auf einige hilfreiche Links verwiesen. Schau mal.

26
InspiredBy

Ein Formular auf folgende Weise definieren:

@using (Html.BeginForm("ControllerMethod", "ControllerName", FormMethod.Post))

Ruft die Methode "ControllerMethod" im Controller "ControllerName" auf. In der Methode können Sie ein Modell oder andere Datentypen als Eingaben akzeptieren. Siehe this Tutorial für Beispiele, die Formulare und Rasierer verwenden.

0
Justin