DataAnnotationsModelMetadataProvider
的GetMetadataForProperties(..., Type containerType)
和GetMetadataForType(..., Type modelType)
中的containerType和modelType有什麼區別。 我也想舉例說明它們的值,例如用於CustomerViewModel的一些虛構的「編輯」頁面。DataAnnotationsModelMetadataProvider containerType,modelType
1
A
回答
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>
相關問題
- 1. 通過自定義DataAnnotationsModelMetadataProvider添加StringLengthAttribute
- 2. 什麼是MVC的DataAnnotationsModelMetadataProvider中的「Func <object> modelAccessor」參數?
- 3. DataAnnotationsModelMetadataProvider的源代碼
- 4. getItemSummaries1,containerType - 投資 - >空
- 5. 張貼到列表<modeltype> MVC3
- 6. ModelType中的ForeignKey上的Queryset過濾
- 7. C++函數模板編譯錯誤「'containerType'不是模板」
- 8. LabeFor不生成顯示拉布勒類屬性
- 9. 獲取相同類型的多個屬性在MetadataProvider
- 10. 自定義HTML在MVC3模型屬性
- 11. 解決方案metadata.HideSurroundingHtml不起作用
- 12. 實體框架:自己的modeltype列表刪除其他條目
- 13. 中繼器控件沒有公共屬性ModelType
- 14. NullReference錯誤而assiging在MVC視圖(剃刀)Modeltype值
- 15. ASP.NET 4.5:屬性'modeltype'不是元素'FormView'的有效屬性
- 16. @ModelType導致即使剃刀註冊語法錯誤
- 17. 找不到'ModelType'類型的概念模型
- 18. MVC本地化ResourceManager問題
- 19. 在ASP.NET MVC中從ModelMetadataProvider獲取包含對象實例
- 20. 抽象掉在靜態方法在非靜態類類型
- 21. 如何從總是爲真不可爲空值類型
- 22. 擴展CachedDataAnnotationsModelMetadataProvider不緩存一些DataAnnotations
- 23. ASP.NET MVC自定義元數據提供程序
- 24. 在MVC 3.0中,當設置IsRequired屬性的ModelMetadata時,它不會添加驗證
- 25. 在模型綁定時在視圖模型屬性上查找自定義屬性
- 26. ModelMetadata TemplateHint始終爲空
- 27. ModelMetadata.Container屬性爲空
- 28. 我該如何擴展DataAnnotationsModelMetadata
- 29. 如何爲Access 2010創建VBA循環
- 30. 模板中的斷點被忽略,是否有解決方法?
請問您是否可以修復您的第二個示例。 – rgripper
對不起,它是固定的。 – HackedByChinese
謝謝。但有沒有一種情況,containerType與modelType不一樣? – rgripper