title: How do I update a view model from an edit page in MVC3?
body: <p>I have three models that are coming together to create one view model and I'd like to be able to edit that view model when clicking "edit". I can't find a straight forward example of how this works (anywhere).</p>
  
  <p>I'm not sure if I'm going down the right path. I am able to get the view with the data. At this point, I am unable to save it.</p>
  
  <p>Any help would be appreciated.</p>
  
  <p>Thanks!</p>
  
  <p>Models:</p>
  
  <pre><code>    public class Person
  {
      [Key]
      public int Id { get; set; }
  
      [MaxLength(20)]
      [Required(ErrorMessage = "First name is required.")]
      public string FirstName { get; set; }
  
      [MaxLength(20)]
      [Required(ErrorMessage = "Last name is required.")]
      public string LastName { get; set; }
      [MaxLength(40)]
      [Required(ErrorMessage = "Email is required.")]
      public string Email { get; set; }
      [MaxLength(20)]
      [DataType(DataType.PhoneNumber)]
      public string Phone { get; set; }
  
      public bool Active { get; set; }
  }
  
  
      public class ClientContact
  {
      [Key]
      [ForeignKey("Person")]
      public int ClientPersonId { get; set; }
      public int ClientId { get; set; }
      [MaxLength(40)]
      public string Title { get; set; }
  
      public Person Person { get; set; }
      [ForeignKey("ClientId")]
      public Client Client { get; set; }
  }
  
      public class Client
  {
      [Key]
      public int ClientId { get; set; }
      public string Name { get; set; }
      public bool Active {get;set;}
  
  }
  </code></pre>
  
  <p>View Model:</p>
  
  <pre><code>    public class ClientContactViewModel
  {
  
      private SimplexDB db = new SimplexDB();
  
  
      public ClientContactViewModel()
      { 
  
      }
  
  
      public ClientContactViewModel(int id)
      {
          ClientPersonId = id;
          InitializeClientContact();
      }
  
      public int ClientPersonId { get; set; }
  
  
      [Display(Name = "First Name")]
      public string FirstName { get; set; }
      [Display(Name = " Last Name")]
      public string LastName { get; set; }
      [Display(Name = "Title")]
      public string Title { get; set; }
      [Display(Name = "Email Address")]
      public string Email { get; set; }
      [Display(Name = "Phone")]
      public string Phone { get; set; }
      [Display(Name = "Client Name")]
      public int ClientId { get; set; }
  
  
      public SelectList Clients
      {
          get
          {
              return new SelectList(db.Clients, "ClientId", "Name");
  
          }
      }
  
      private void InitializeClientContact()
      {
          var contact = db.ClientPersons.Include("Person").Where(x =&gt; x.ClientPersonId == ClientPersonId).SingleOrDefault();
          if (contact != null)
          {
              FirstName = contact.Person.FirstName;
              LastName = contact.Person.LastName;
              Title = contact.Title;
              Email = contact.Person.Email;
              Phone = contact.Person.Phone;
              ClientId = contact.ClientId;
  
          }
      }
  
  
  
  }
  </code></pre>
  
  <p>Controller:</p>
  
  <pre><code>                public class ClientContactController : Controller
      {
          private database db = new database();
  
  //
          // GET: /ClientContact/Edit/5
  
          public ActionResult Edit(int id)
          {
              return View(new ClientContactViewModel(id));
          }
  
          //
          // POST: /ClientContact/Edit/5
  
          [HttpPost]
          public ActionResult Edit(ClientContactViewModel model)
          {
              if (ModelState.IsValid)
              {
                  db.Entry(model).State = EntityState.Modified;
                  db.SaveChanges();
                  return RedirectToAction("Index");
              }
              return View(model);
          }
  }
  </code></pre>
  
  <p>I get an error at the db.Entry(model).State... "The entity type ClientContactViewModel is not part of the model for the current context."</p>