2012-02-05 32 views
5

tôi sử dụng Entity Framework 4.2 và MVC 4
Asp.net MVC 4, Làm thế nào làm cho Thầy chi tiết trong hình thức tương tự

I Got này cấu trúc mô hình/Cơ sở dữ liệu

UserInformation
UserID (PK)
FirstName
LastName
Email


UserFavoriteColor
FavID (PK)
Màu
Tại sao
UserID (FK)

Có thể trong một Tạo điều khiển hành động để điền vào bảng UserInformation và sau đó Điền vào UserFavoriteColor.

Tôi biết tôi có thể thực hiện điều này theo hai bước bằng cách tạo 2 phân tách sectiosn. Nhưng đây không phải là điều tôi muốn.


enter image description here

+0

Đây có phải là MVC4 giống như tựa đề của bạn không? hoặc mvc-3 như thẻ của bạn nói? –

+0

Cập nhật không biết thẻ mvc 4 đã có –

+0

Bạn đang cố gắng thực hiện điều này qua ajax? hoặc postback tiêu chuẩn? –

Trả lời

7

Thông thường, bạn sẽ sử dụng jQuery để chèn một hàng mới. Vì chúng ta không biết những gì mã của bạn trông như thế nào, thật khó để cho bạn thấy chính xác cách thức này nên được thực hiện, nhưng bạn có thể nhìn vào ví dụ ở đây:

http://ivanz.com/2011/06/16/editing-variable-length-reorderable-collections-in-asp-net-mvc-part-1/

Bí quyết là bạn phải tên chúng một cách thích hợp để mô hình kết dính sẽ thêm chúng vào bộ sưu tập của bạn khi bạn nhấp vào lưu. Sau đó, bạn phải viết mã trong phương thức đăng bài của mình để xem qua danh sách màu và thêm bất kỳ bản ghi nào chưa tồn tại.

Đây là một điều tương đối phức tạp, do đó, nó không phải là một cái gì đó mà có thể dễ dàng được bảo hiểm trong một câu trả lời duy nhất ở đây.

Tùy chọn khác chỉ đơn giản là có một hành động cho nút thêm mới và chèn một bản ghi trống vào bộ sưu tập dữ liệu, khi đăng lại sẽ nhận được 3 bản ghi (một trong số đó có giá trị null). Khi bạn điền vào các giá trị, sau đó nó sẽ đăng lại phương thức bài chính và udate bản ghi trống.

Giải pháp này có nhược điểm là nếu người dùng thêm bản ghi mới và không lưu, bản ghi trống sẽ nằm trong cơ sở dữ liệu.

+0

Tôi thử điều đó, và đó là công trình tuyệt vời. Một điều nữa thôi. Trong ví dụ này sử dụng một lớp poco. Có cách nào để sử dụng nguyên tắc đó với cơ sở dữ liệu trước không.Khi tôi cập nhật mô hình từ cơ sở dữ liệu + T4 dbcontext, điều đó tạo cho tôi 2 lớp.UserInformation.cs và UserFavoriteColor.cs. Trong UserInformation.cs tôi có ICollection UserFavoriteColors {get; set;}. Như bạn có thể thấy, đó là một ICollection, không phải là Danh sách giống như liên kết mà bạn cung cấp cho tôi. –

+0

@ Jean-Francois - một ICollection tương tự như một Danh sách, bạn sẽ có thể điều chỉnh nó. Bạn có thể thêm và xóa các mục, giống như một danh sách. –

+0

Trong ví dụ anh ta sử dụng cho (int i = 0; i model.FavouriteMovies [i] .Title)} Ở đây chúng ta thấy rằng anh ta sử dụng [i] để di chuyển trong Danh sách FavouriteMovies. Trong trường hợp của tôi, tôi cố gắng làm điều tương tự và tôi không thể sử dụng [i] như anh ấy. Cách duy nhất tôi có thể lặp qua ICollection của tôi là như thế cho (int i = 0; i Model.MyUserInfo.UserFavoriteColors.elementAt (i) .Color)}. Kết quả html không cho tôi thành phần ID thích hợp với elementAt. –

Các vấn đề liên quan