Tôi có ba mô hình sắp đến với nhau để tạo một mô hình xem và tôi muốn có thể chỉnh sửa mô hình chế độ xem đó khi nhấp vào "chỉnh sửa". Tôi không thể tìm thấy một ví dụ thẳng về cách thức hoạt động của nó (ở bất kỳ đâu).Làm cách nào để cập nhật mô hình chế độ xem từ trang chỉnh sửa trong MVC3?
Tôi không chắc mình có đi đúng hướng hay không. Tôi có thể xem được dữ liệu. Tại thời điểm này, tôi không thể lưu nó.
Mọi trợ giúp sẽ được đánh giá cao.
Cảm ơn!
Models:
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;}
}
Xem mẫu:
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 => 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;
}
}
}
Bộ điều khiển:
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);
}
}
tôi nhận được một lỗi tại db.Entry (model) .State ... " Kiểu thực thể ClientContactViewModel không phải là một phần của mô hình cho ngữ cảnh hiện tại. "
Tôi sẽ làm như thế nào? Xin lỗi, tôi mới làm quen với điều này. –
Xem câu trả lời cập nhật của tôi. – jrummell
Để rõ ràng, tôi có cần cập nhật mô hình xem của mình dựa trên mã bạn đã viết ở trên không? Cảm ơn bạn đã giúp đỡ. –