2012-08-27 29 views
5

Vì vậy, tôi đang tạo trang đăng ký trong ASP.NET MVC và có danh sách các trường thay đổi tùy thuộc vào một số điều kiện (được lấy từ cơ sở dữ liệu).Xem đa hình MVC

Điều gì sẽ được coi là phương pháp tốt nhất để hiển thị các trường này trên chế độ xem mà không thay đổi mã mỗi lần cập nhật DB.

Hệ thống hiện tại tôi đang nghĩ đến là tạo Từ điển với "Tên, Loại dữ liệu", sau đó chỉ lặp qua danh sách và đặt loại đầu vào mới cho mỗi tên (sử dụng công tắc cho kiểu dữ liệu để có trình chỉnh sửa chính xác). Nhưng nó có vẻ giống như một lỗi thời và không sử dụng đầy đủ các lợi ích của hệ thống .NET MVC (chẳng hạn như xác thực, giá trị mặc định, trình chỉnh sửa tùy chỉnh cho nội dung cụ thể).

Có cách tiếp cận nào mà tôi có thể không biết trong .NET để xử lý sự cố này không?

+0

Cách tiếp cận tốt nhất (từ quan điểm MVC) sẽ là tạo các Chế độ xem khác nhau cho từng trường hợp vì "chế độ xem không bao giờ nên bao gồm bất kỳ loại logic nào". Tuy nhiên, tôi nghi ngờ đây là loại câu trả lời bạn đang tìm kiếm, vì vậy tôi sẽ không đăng câu trả lời này. Bạn có thể cung cấp thêm chi tiết về những gì bạn đang cố gắng đạt được và tại sao không? Điều này sẽ giúp chúng tôi tìm ra giải pháp cụ thể hơn cho vấn đề của bạn (một vấn đề mà bạn không ngại áp dụng). – Pluc

+0

@Pluc về cơ bản là một hệ thống đăng ký sự kiện, mỗi "Khách hàng" chỉ định các trường tùy chỉnh của riêng chúng, được yêu cầu cho người dùng cuối nhập trước khi được phép đăng ký. Vì chúng tôi không kiểm soát các mục nhập của khách hàng nên chúng tôi khó có thể thực hiện chế độ xem cho từng trường hợp: ( –

+0

Vì vậy, các trường có thể có nhiều loại và bất kỳ số lượng nào? – Pluc

Trả lời

6

Tôi gặp sự cố rất giống nhau. Đăng bài là here.

Không, không có chế độ xem đa hình trong ASP.NET MVC. Ít nhất tôi không thể làm cho nó làm việc tấn và tấn thử nghiệm và hỏi câu hỏi này nhiều lần theo những cách khác nhau trên Stack Overflow.

Loại @model được định nghĩa trong chế độ xem sẽ xác định loại bên trong chế độ xem, thay vì loại thực tế của mô hình (trong trường hợp đó là giao diện hoặc lớp trừu tượng hoặc lớp cơ sở). trang trí, sẽ không hoạt động, vì loại được xác định theo loại mô hình).

Rất tiếc, không có câu trả lời tích cực nào cho câu hỏi của bạn. Tôi đã kết thúc bằng cách viết bó các mẫu trình soạn thảo, mà chỉ khác nhau theo kiểu mô hình bên trong. Vi phạm DRY lớn, nhưng đây là cách ASP MVC làm việc, tiếc là.

Hy vọng điều này sẽ giúp bạn tiết kiệm thời gian.

+0

Cảm ơn câu trả lời này.Tôi bây giờ có thể ngừng đập đầu của tôi chống lại bản chất thiếu OO của ASP.NET MVC.Tất cả các thí nghiệm của tôi cho đến nay xác nhận exactl y những gì bạn nói: đây là không có quan điểm đa hình trong ASP.NET MVC – Geeb

+0

thưởng thức. rất nhiều thời gian, nên cố gắng tiết kiệm một chút cho người khác –