User User - 19 days ago 6
ASP.NET (C#) Question

How to get textbox value from view to controller in mvc4 on submit button click

How to get the textbox value from view to controller in mvc4?If I using httppost method in controller the page cannot found error was came.

View

@model MVC_2.Models.FormModel

@{
ViewBag.Title = "DisplayForm";
}

@using (Html.BeginForm("DisplayForm", "FormController", FormMethod.Post))
{
<form>
<div>
@Html.LabelFor(model => model.Empname)
@Html.TextBoxFor(model => model.Empname)
@* @Html.Hidden("Emplname", Model.Empname)*@

@Html.LabelFor(model => model.EmpId)
@Html.TextBoxFor(model => model.EmpId)
@* @Html.Hidden("Emplid", Model.EmpId)*@

@Html.LabelFor(model => model.EmpDepartment)
@Html.TextBoxFor(model => model.EmpDepartment)
@* @Html.Hidden("Empldepart", Model.EmpDepartment)*@

<input type="button" id="submitId" value="submit" />

</div>
</form>
}


model

public class FormModel
{
public string _EmpName;
public string _EmpId;
public string _EmpDepartment;

public string Empname
{
get {return _EmpName; }
set { _EmpName = value; }
}

public string EmpId
{
get { return _EmpId;}
set {_EmpId =value;}
}

public string EmpDepartment
{
get { return _EmpDepartment; }
set { _EmpDepartment = value; }
}
}


controller

public ActionResult DisplayForm()
{
FormModel frmmdl = new FormModel();
frmmdl.Empname=**How to get the textbox value here from view on submitbutton click???**
}

Answer

First you need to change your button type to "submit". so your form values will be submitted to your Action method.

from:

<input type="button" id="submitId" value="submit" />

to:

<input type="submit" id="submitId" value="submit" />

Second you need to add your model as parameter in your Action method.

[HttpPost]
public ActionResult DisplayForm(FormModel model)
    {
       var strname=model.Empname;
             return View();
    }

Third, If your Controller name is "FormController". you need to change the parameter of your Html.Beginform in your view to this:

@using (Html.BeginForm("DisplayForm", "Form", FormMethod.Post))

    {
    //your fields
    }

P.S. If your view is the same name as your Action method which is "DisplayForm" you don't need to add any parameter in the Html.BeginForm. just to make it simple. like so:

@using (Html.BeginForm())
{
//your fields
}
Comments