Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC:访问集合中项的ModelMetadata_Asp.net Mvc_Templates_Asp.net Mvc 2_Html Helper_Scaffolding - Fatal编程技术网

Asp.net mvc ASP.NET MVC:访问集合中项的ModelMetadata

Asp.net mvc ASP.NET MVC:访问集合中项的ModelMetadata,asp.net-mvc,templates,asp.net-mvc-2,html-helper,scaffolding,Asp.net Mvc,Templates,Asp.net Mvc 2,Html Helper,Scaffolding,我正在尝试为索引视图编写一个自动脚手架。我希望能够传入一组模型或视图模型(例如,IEnumerable),并返回一个HTML表,该表使用DisplayName属性作为标题(th元素),使用HTML.Display(propertyName)属性作为单元格(td元素)。每行应对应于集合中的一项 当我只显示单个记录时,如在详细信息视图中,我使用ViewData.ModelMetadata.Properties获取给定模型的属性列表。但是当我传递给视图的模型是模型或视图模型对象的集合而不是模型或视图模

我正在尝试为索引视图编写一个自动脚手架。我希望能够传入一组模型或视图模型(例如,
IEnumerable
),并返回一个HTML表,该表使用
DisplayName
属性作为标题(
th
元素),使用
HTML.Display(propertyName)
属性作为单元格(
td
元素)。每行应对应于集合中的一项

当我只显示单个记录时,如在详细信息视图中,我使用
ViewData.ModelMetadata.Properties
获取给定模型的属性列表。但是当我传递给视图的模型是模型或视图模型对象的集合而不是模型或视图模型本身时会发生什么


如何获取集合中特定项的ModelMetadata?

一个简单的扩展方法可以完成这项工作:

public static class MyExtensions
{
    public static ModelMetadata GetMetadata<TModel>(this TModel model)
    {
        return ModelMetadataProviders.Current.GetMetadataForType(null, typeof(TModel));
    }
}
公共静态类MyExtensions
{
公共静态模型元数据GetMetadata(此TModel模型)
{
返回modelmataproviders.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) %>