2010-02-13 37 views
8

Tôi đang tạo ứng dụng asp.net mvc 2 tạo mô hình xem của tôi tự động tùy thuộc vào đầu vào của người dùng. Đơn giản chỉ cần đặt, người dùng có thể chọn những lĩnh vực anh muốn xem trong View của mình.Chú thích dữ liệu ASP.NET MVC 2 trong một mô hình được tạo động

Vì những người giúp đỡ theo khuôn mẫu phụ thuộc rất nhiều vào các thuộc tính và thuộc tính mô hình (chú thích dữ liệu), tôi cần phải thêm các thuộc tính vào mô hình khung trong khi chạy. Không cần phải nói rằng đây không phải là một nhiệm vụ đơn giản.

Vì vậy, các bạn khuyên tôi nên làm gì trong trường hợp này? Tôi không thể thêm các thuộc tính tĩnh, vì vậy tôi nên tiếp tục và cố gắng thêm chúng một cách năng động ngay cả khi nó là rất nhiều công việc hoặc tôi nên cố gắng sử dụng một cách tiếp cận khác?

Cảm ơn trước!

Felipe

Trả lời

3

Trình liên kết mô hình tùy chỉnh sẽ chỉ giúp bạn trong phần ràng buộc. Nó sẽ không giúp đỡ với những người trợ giúp hay các tính năng khác của ASP.NET MVC.

Tôi khuyên bạn nên viết một nhà cung cấp tùy chỉnh metadata thay vì bằng cách kế thừa từ ModelMetadataProvider và đăng ký cung cấp dịch vụ của bạn trong global.asax bằng cách sử dụng ModelMetadataProviders. Nhà cung cấp siêu dữ liệu tùy chỉnh có thể lấy siêu dữ liệu từ bất kỳ nơi nào nó muốn: thuộc tính CLR, tệp XML, cơ sở dữ liệu hoặc trình tạo số ngẫu nhiên. Nhà cung cấp chú thích dữ liệu được xây dựng trong khóa học sử dụng các thuộc tính CLR.

Bạn có thể muốn xem mã nguồn của nhà cung cấp siêu dữ liệu chú thích dữ liệu được tích hợp để xem ví dụ về cách triển khai nhà cung cấp. Bạn có thể tải về mã nguồn ASP.NET MVC 2 RC 2 từ the CodePlex site. Cũng có thể có một triển khai trong dự án MVC Futures, nhưng tôi không chắc chắn.

+0

Cảm ơn rất nhiều người! –

0

Âm thanh như quá mức cần thiết (nếu tôi hiểu chính xác) - đó là tạo mô hình khi đang di chuyển. Bạn không sử dụng lợi ích chính của việc có mô hình; biên dịch kiểm tra thời gian.

Tôi cố gắng sử dụng các đối tượng cụ thể cho tác vụ (ví dụ lớp UserForm có danh sách các lớp UserFormFields và vv) trong tay và không tạo chúng khi đang di chuyển.

Edit: Những gì tôi gợi ý là để không sử dụng thuộc tính dựa xác nhận và thiết kế mô hình của bạn với xác nhận trong tâm trí. Thiết kế như dưới đây có thể giải thích điểm của tôi tốt hơn:

interface IUserValidation 
{ 
    bool IsValid(); 
} 

class RequiredUserValidation : IUserValidation 
{ 
    public bool IsValid() 
    { 
     // .... 
    } 
} 

class UserFormField 
{ 
    List<IUserValidation> _validations; 

    public IEnumerable<ValidationResult> Validate() 
    { 
     // ... 
    } 
} 
+0

Đây gần như là kiểu của tôi. Một tập hợp các trường chứa dữ liệu. Vấn đề là tôi không có bất kỳ thông tin về các lĩnh vực này tại thời gian biên dịch. Tôi cần phải truy vấn cơ sở dữ liệu và lấy thông tin từ các trường và chúng điền các thuộc tính của chúng –

0

Có vẻ như bạn sẽ cần một trình kết dính mô hình chế độ xem tùy chỉnh áp dụng xác thực động.

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