2013-05-09 30 views
8

Tôi đã gặp một scenerio để tùy chỉnh DataAnnotations trong ứng dụng web dữ liệu động. Đây là scenerio:Tùy chỉnh chú thích dữ liệu trong dữ liệu động

[Display (Name = "DispName")]

public string dname {get; set;}

Thay vì hardcoding Tên = "DispName" cho hiển thị DataAnnotation, tôi muốn lấy một số giá trị từ DataBase và vừa với thuộc tính Name. như:

[Display (Tên = SomeValueFromDB)]

public string dname {get; set;}

Có cách nào để hiển thị các thuộc tính Name của Display DataAnnotation từ cơ sở dữ liệu thay vì của hardcoding giá trị của nó?

Cảm ơn trước,

Sujith

Trả lời

11

Tôi tìm thấy một giải pháp. Nhưng điều này chỉ áp dụng nếu chúng ta xây dựng ứng dụng:

Tạo một lớp tùy chỉnh (Say: CustomDisplayNameAttribute) mà được thừa hưởng DisplayNameAttribute. Và gọi tên lớp đó là thuộc tính hiển thị (tại đây "CustomDisplayName") phía trên tên thuộc tính.

Trong khi đặt thuộc tính DataAnnotation for Display, hãy bỏ qua phần "Thuộc tính" đó khỏi tên lớp. I E. thuộc tính DataAnnotation for Display sẽ là CustomDisplayName (không phải CustomDisplayNameAttribute).

public class DomainClass 
{ 
    [CustomDisplayName("")] 
    public object PropertyName{ get; set; } 
} 



public class CustomDisplayNameAttribute : DisplayNameAttribute 
    { 
     public CustomDisplayNameAttribute(string value) 
      : base(GetMessageFromResource(value)) 
     { } 

     private static string GetMessageFromResource(string value) 
     { 
      return "Custom Display Name"; 
     } 
    } 

Hope this helps tất cả ....

Chúc mừng Mã hóa ....

+2

cảm ơn bạn Sujith. Tôi cũng cần như vậy :) – BonDaviD

+1

điều này rất hữu ích, bây giờ tôi có thể sử dụng nhiều ngôn ngữ mà không cần nhiều nỗ lực –