Nate Pet
Nate Pet

Reputation: 46222

Modify List in View and send back to Controller

I have the following in my controller:

    ViewBag.UserList = userlist.ToList();

    return View ();

The userlist have the following 3 fields:

First Name, Last Name, Phone Number

How do I go about creating a list in the view where the user can modify the fields? I am well aware of using the foreach to loop through the list but how do I program the ability to modify the records?

I also need to know how I can then send this list back to the controller so that I can insert the records into my database.

Upvotes: 0

Views: 266

Answers (2)

Jason Meckley
Jason Meckley

Reputation: 7591

I'll assume this is a web mvc project since it's tagged asp.net-mvc.

the view will render html. the html will contain (at a minimum) a form, inputs for each editable value and a submit button. ultimately the markup will look like this

<form id="?" method="post" action="usercontroller/update">
    <input name="users.firstname[0]" value="john"/>
    <input name="users.lastname[0]" value="doe"/>
    <input name="users.phonenumber[0]" value="555-123-4567"/>
    <input name="users.firstname[1]" value="jane"/>
    <input name="users.lastname[1]" value="smith"/>
    <input name="users.phonenumber[1]" value="555-123-4567"/>
    <submit value="update"/>
</form>

on the server you would have a controller

class UserController : BaseClassIfNecessary
{
     public ActionResult() Update(User[] users)
     {
          foreach user update database
          return RedirectAction("url");
     }
}

Upvotes: 0

gdoron
gdoron

Reputation: 150253

As you said, iterate the list in the view, Use the TextboxFor() method of each property you want to modify, add a submit button, in the controller action add List<T> list to catch the changes and there you go.

Upvotes: 1

Related Questions