Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC 3 Razor: Passing Data from View to Controller

I'm brand new to all things .NET. I have a very basic web page with an HTML form. I want 'onsubmit' to send the form data from the View to the Controller. I've seen similar posts to this but none have answers involving the new-ish Razor syntax. What do I do with 'onsubmit', and how do I access the data from the Controller? Thanks!!

like image 863
Kyle M Avatar asked Jun 08 '12 22:06

Kyle M


1 Answers

You can wrap your view controls you want to pass in Html.Beginform.

For example:

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

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

}

When Submit button is pressed everything inside of of that Beginform will be submitted to your "ActionMethodName" method of the "ControllerName" controller.

ON the controller side you can access all received data from the view like this:

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

}

collection object above will contain all your input entries that we submitted from the form. You can access them by name just like you would access any array: collection["blah"] or collection.Get("blah")

You can also pass parameters to your controllers directly without sending the entire page with 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;

}

Or you can combine both of these methods and pass specific parameters along with the Formcollection. It's up to you.

Hope it helps.

edit: while I was writing other users referred you to some helpful links as well. Take a look.

like image 71
InspiredBy Avatar answered Sep 28 '22 07:09

InspiredBy