In this article I will explain with an example, how to pass (send) Form Collection and Model values same time to Controller in ASP.Net MVC Razor.
This article will also illustrate how to get values of TextBox created using Html.TextBox helper function using Form Collection and the TextBox created using Html.TextBoxFor helper function using Model inside Controller in ASP.Net MVC Razor.
Note: For beginners in ASP.Net MVC, please refer my article ASP.Net MVC Hello World Tutorial with Sample Program example.
 
 
Model
Following is a Model class named PersonModel with a property i.e. Name.
public class PersonModel
{
    ///<summary>
    /// Gets or sets Name.
    ///</summary>
    public string Name { get; set; }
}
 
 
Controller
The Controller consists of two Action methods.
Action method for handling GET operation
Inside this Action method, simply the View is returned.
 
Action method for handling POST operation
Inside this Action method, the value of the TextBox created using the Html.TextBoxFor helper function is fetched using the PersonModel class.
And the value of the TextBox created using the Html.TextBox helper function is fetched using the Form Collection i.e. Request.Form collection.
public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
 
    [HttpPost]
    public ActionResult Index(PersonModel person)
    {
        string name = person.Name;
        string country = Request.Form["Country"];
        return View();
    }
}
 
 
View
Inside the View, in the very first line the PersonModel class is declared as Model for the View.
The View consists of an HTML Form which has been created using the Html.BeginForm method with the following parameters.
ActionName – Name of the Action. In this case the name is Index.
ControllerName – Name of the Controller. In this case the name is Home.
FormMethod – It specifies the Form Method i.e. GET or POST. In this case it will be set to POST.
There are two TextBoxes. The TextBox for the Name value is created using Html.TextBoxFor function while the TextBox for the Country value is created using Html.TextBox helper function.
There’s also a Submit Button at the end of the Form and when the Button is clicked, the Form is submitted.
@model Model_Form_Post_MVC.Models.PersonModel
 
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
        <table cellpadding="5">
            <tr>
                <td>Name:</td>
                <td>@Html.TextBoxFor(m => m.Name)</td>
            </tr>
            <tr>
                <td>Country:</td>
                <td>@Html.TextBox("Country")</td>
            </tr>
        </table>
        <br/>
        <input type="submit" value="Submit"/>
    }
</body>
</html>
 
 
Screenshots
Form with two TextBox fields
Pass (Send) Form Collection and Model values same time to Controller in ASP.Net MVC
 
TextBox Values read from Form Collection and Model
Pass (Send) Form Collection and Model values same time to Controller in ASP.Net MVC
 
 
Downloads