2013-01-10 46 views
0

在我的BE類中,我有一些與表字段匹配的屬性。我想爲每個這些屬性公開描述性名稱。例如將其顯示爲網格中的列標題。例如,FirstName有一個屬性。我想公開它的描述性名稱爲First NameC中BE屬性的標籤#

爲此,我創建了一對數組作爲此BE類的一個屬性。即myarray("FirstName","First Name") 有沒有更好的方法來做到這一點?

回答

0

我發現這個有用的,這是我如何解決它。我發佈這個,因爲它可能對其他人有用。

在BE中對此進行了定義。

[DisplayName("First Name"), Description("First Name of the Member")] 
public string FirstName 
{ 
    get { return _firstName; } 
    set { _firstName = value; } 
} 

您可以閱讀每個屬性的這些細節如下;

PropertyDescriptorCollection propertiesCol = TypeDescriptor.GetProperties(objectBE); 

PropertyDescriptor property; 

for (int i = 0; i < propertiesCol.Count; i++) 
{ 
    property = TypeDescriptor.GetProperties(objectBE)[i]; 

    /* 
    // Access the Property Name, Display Name and Description as follows 
    property.Name   // Returns "FirstName" 
    property.DisplayName // Returns "First Name" 
    property.Description // Returns "First Name of the Member" 
    */ 
} 
  • 其中objectBE是BE類的對象實例。
3

您可以在模型中做到這一點:

[Display(Name = "First Name")] 
public string FirstName { get; set; } 

,然後在視圖中,您可以參考的標籤名稱是這樣的:

@Html.DisplayFor(m=>m.FirstName) 
+1

'DisplayFor'將顯示FirstName值(使用默認或預定義的模板),而不是屬性的*名稱*。你可能是指'@ Html.DisplayNameFor(m => m.FirstName)'。 – mipe34

3

您可以在需購房使用[DisplayName("First name")]屬性。

然後在視圖中使用: @Html.LabelFor(m=>m.FirstName)

類似的問題在這裏對SO:How to change the display name for LabelFor in razor in mvc3?

編輯

您還可以使用[Display(Name="First name")]屬性在所有的BE屬性。 然後創建一個模板來顯示您的BE(更多信息如何在這裏創建模板:How do I create a MVC Razor template for DisplayFor())。

然後在視圖中,您將只需使用:

@Html.DisplayFor(m=>m, "MyModelTemplateName")