2009-08-07 18 views
6

Có ai có ví dụ về các lớp bạn thân trong ASP.NET MVC 2 Preview 1 không? Tôi dường như không thể tìm thấy bất cứ điều gì trên MSDN về nó, nhưng theo ScottGu họ đã thêm chức năng cho nó trong bản phát hành gần đây nhất.ASP.NET MVC V2 - Lớp Buddy

Trả lời

10

Tôi tin rằng những gì bạn đang tìm kiếm là MetadataTypeAttribute. Đây không phải là một cái gì đó cụ thể cho MVC nhưng nó là một phần của không gian tên DataAnnotations được giới thiệu trong 3.5. Nó cho phép bạn trang trí các thành viên của một lớp học bên ngoài với chính lớp đó. Ví dụ: nếu bạn đã tạo một loại lớp được tạo có tên là Khách hàng và muốn thêm thuộc tính vào nó, bạn có thể tạo một phần mới trong cùng một không gian tên và gắn thẻ nó với MetadataType. Sau đó tạo lớp Siêu dữ liệu với các thuộc tính phù hợp và trang trí chúng.

/* Generated class */ 
public partial class Customer 
{ 
    public string Name { get; set; } 
} 


/* MetadataType decorated class */ 
[MetadataType(CustomerMetadata)] 
public partial class Customer 
{ /* ... */ } 


/* Metadata type */ 
public class CustomerMetadata 
{ 
    [Required(ErrorMessage = "Name is required")] 
    public string Name { get; set; } 
} 
+0

Cảm ơn! Đó chính xác là những gì tôi cần. :) –

+0

Điểm trong việc phân tách các lớp học là gì? – UpTheCreek

+1

Nó không phải là quá nhiều "điểm" vì nó là một giải pháp xấu để xử lý các lớp được tạo tự động từ EF hoặc LINQ2SQL. Bởi vì các tập tin lớp được tạo ra không có cách nào để áp dụng các thuộc tính cho các thuộc tính, do đó một thay thế hacky đã được tạo ra. –