semper fi
semper fi

Reputation: 737

Add to list mvc

I'm trying to add string data to list, but have null reference exception and don't have any idea how to fix this.

Here home controller:

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

[HttpPost]
public ActionResult Index(ChatUser model)
{
    if (ModelState.IsValid)
    {
        **model.chatGroup.Add(model.inputGroups);**  - here excepton 
    }
    return View(model);
}

And Index.cshtml:

@model test.Models.ChatUser
@{
    ViewBag.Title = "Test";
}

<h2>@ViewBag.Title.</h2>

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
    <div class="form-group">
        @Html.LabelFor(m => m.inputGroups, new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.TextBoxFor(m => m.inputGroups, new { @class = "form-control" })
            <input type="submit" value="GO" class="btn btn-default" />
        </div>
    </div>


}

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Upvotes: 0

Views: 84

Answers (1)

user3559349
user3559349

Reputation:

Your form does not include any controls for properties of chatGroup so its null when you post back. You need to either initialize the property in a parameterless constructor

public class ChatUser
{
  public ChatUser()
  {
    chatGroup = new List<string>(); // initialize collection
  }
  ....
  public List<string> chatGroup { get; set; }
}

or initialize it in the POST method

[HttpPost]
public ActionResult Index(ChatUser model)
{
  if (ModelState.IsValid)
  {
    model.chatGroup = new List<string>(); // initialize collection
    model.chatGroup.Add(model.inputGroups);
  }
  return View(model);
}

Upvotes: 1

Related Questions