web-dev-qa-db-fra.com

ASP.NET MVC 3 Razor: Passage de données de View à Controller

Je suis nouveau dans toutes les choses. NET. J'ai une page Web très basique avec un formulaire HTML. Je veux que 'onsubmit' envoie les données de formulaire de la vue au contrôleur. J'ai vu des articles similaires à celui-ci mais aucun n'a de réponse concernant la nouvelle syntaxe Razor. Que faire avec 'onsubmit' et comment puis-je accéder aux données depuis le contrôleur? Merci!!

10
Kyle M

Vous pouvez encapsuler les contrôles d'affichage que vous souhaitez transmettre en HTML.Beginform.

Par exemple:

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

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

}

Lorsque vous cliquez sur le bouton Soumettre, tout ce qui se trouve à l'intérieur de ce Beginform sera soumis à votre méthode "ActionMethodName" du contrôleur "ControllerName".

Sur le contrôleur, vous pouvez accéder à toutes les données reçues de la vue comme ceci:

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

}

l’objet collection ci-dessus contiendra toutes les entrées que nous avons soumises à partir du formulaire. Vous pouvez y accéder par leur nom comme vous le feriez pour n'importe quel tableau: Collection ["blah"] Ou collection.Get ("blah")

Vous pouvez également passer des paramètres à vos contrôleurs directement sans envoyer la page entière avec FormCollection:

@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;

}

Vous pouvez également combiner ces deux méthodes et transmettre des paramètres spécifiques avec le formulaire FormCollection. C'est à vous.

J'espère que ça aide.

edit: pendant que j'écrivais, d'autres utilisateurs vous ont également référé à des liens utiles. Regarde.

26
InspiredBy

Définir un formulaire de la manière suivante:

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

Appellera la méthode "ControllerMethod" dans le contrôleur "ControllerName". Dans la méthode, vous pouvez accepter un modèle ou d'autres types de données en tant qu'entrées. Voir this tutorial pour des exemples d'utilisation de formulaires et de rasoir mvc.

0
Justin