gpt4 book ai didi

asp.net-mvc - ASP.NET MVC : Accessing ModelMetadata for items in a collection

转载 作者:行者123 更新时间:2023-12-04 12:14:52 24 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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) %>

关于asp.net-mvc - ASP.NET MVC : Accessing ModelMetadata for items in a collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2441071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com