7

我想爲索引視圖編寫一個自動腳手架。我希望能夠傳遞一組模型或視圖模型(例如IEnumerable<MyViewModel>)並獲取一個HTML表格,該表格使用DisplayName屬性作爲標題(th元素)和Html.Display(propertyName)作爲單元格(td元素) 。每一行應該對應於集合中的一個項目。ASP.NET MVC:訪問集合中的項目的ModelMetadata

當我只顯示單個記錄時,如在Details視圖中,我使用ViewData.ModelMetadata.Properties來獲取給定模型的屬性列表。但是,當我傳遞給視圖的模型是模型或視圖模型對象的集合而不是模型或視圖模型本身時,會發生什麼?

如何獲取集合中特定項目的ModelMetadata?

回答

6

一個簡單的擴展方法可能做的工作:

public static class MyExtensions 
{ 
    public static ModelMetadata GetMetadata<TModel>(this TModel model) 
    { 
     return ModelMetadataProviders.Current.GetMetadataForType(null, typeof(TModel)); 
    } 
} 

而在你的看法:

<%@ Page 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewPage<System.Collections.Generic.IEnumerable<MyViewModel>>" %> 

<%-- Get metadata for the first item in the model collection --%> 
<%= Html.Encode(Model.ElementAt(0).GetMetadata().ModelType) %> 
+0

這就是我需要的,謝謝! – devuxer 2010-03-14 17:00:16

相關問題