2012-06-07 61 views

回答

0

GetMetadataForProperties針對在containerType中找到的每個屬性返回一個ModelMetadata實例。

所以,如果您有:

public class CustomerViewModel 
{ 
    [DisplayName("Customer Name")] 
    public string Name { get; set; } 
    public string AccountNumber { get; set; } 
    // etc. 
} 

而這個樣本代碼:

var model = new CustomerViewModel(); 

var propertiesMetadata = provider.GetMetadataForProperties(model, model.GetType()); 

var customerName = propertiesMetadata.Where(m => m.PropertyName == "Name").First().DisplayName; // customerName would equal "Customer Name" 

GetMetadataForType獲取元數據,什麼是表面上的容器本身。

實施例:

var model = new CustomerViewModel(); 

var metadata = provider.GetMetadataForType(() => model, model.GetType()); 

var customerName = metadata.Properties.Where(m => m.PropertyName == "Name").First().DisplayName; // customerName would equal "Customer Name" 

這東西大多在模型內使用的綁定,校驗和查看發動機內部。

在視圖本身中,您不直接訪問這些方法。您的視圖已經可以訪問ModelMetadata。以下視圖(使用CustomerViewModel作爲模型類型)使用模型的每個屬性的顯示名稱打印一個跨度。

@foreach (var propertyMetadata in ViewData.ModelMetadata.Properties) { 
    <span>@propertyMetadata.DisplayName</span> 
} 

// the resulting HTML should be <span>Customer Name<span><span>Account Number</span> 
+0

請問您是否可以修復您的第二個示例。 – rgripper

+0

對不起,它是固定的。 – HackedByChinese

+0

謝謝。但有沒有一種情況,containerType與modelType不一樣? – rgripper

相關問題