Search code examples
c#asp.net-mvctextboxcontrollerhtml.textboxfor

Can't pass value from textbox to controller using textboxfor


I try to pass values from textbox to controller but my first value gets passed and my second value doesn't get passed . To be short i'll post my code here :

The code from index view :

@model FirstProject.Controllers.Family

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@using (@Html.BeginForm("SubmitTextBox", "OtherExample", FormMethod.Post))
{
    @Html.TextBoxFor(x => x.Name)
    @Html.TextBoxFor(x => x.Member.FirstName)
    <input type="submit"/>
}

<p>@Model.Name</p>
<p>@Model.Member.FirstName</p>

the code from controller :

public ActionResult Index()
        {
            return View(new Family());
        }

        public ActionResult SubmitTextBox(Family model)
        {
            return View("Index", model);
        }

and my model :

public class Family
{
    public string Name { get; set; }
    public Member Member;
    public Family()
    {
        Member = new Member();
    }

}

public class Member
{
    public string FirstName { get; set; }
}

My Name value is shown but my Member.Firstname is'n shown in the view because isn't passed. What is happening can someone explain ?


Solution

  • You have not make Member property.

    Make Member property in Model instead of field:

    public Member Member {get;set;}
    

    Your Model:

    public class Family
    {
        public string Name { get; set; }
        public Member Member {get;set;}
        public Family()
        {
            Member = new Member();
        }
    
    }