首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ASP.NET内核中获取ModelMetadata的值?

如何在ASP.NET内核中获取ModelMetadata的值?
EN

Stack Overflow用户
提问于 2020-12-11 02:28:53
回答 1查看 464关注 0票数 0

我有一个项目,是在ASP.NET Core5.0框架上用C#编写的。

我试图通过使用ModelMetadata直接访问数据来手动呈现剃刀视图。在一个视图中,我希望遍历Html.ViewData.ModelMetadata中的所有属性,并手动获取每个属性的值。

在旧的ASP.NET MVC中,我习惯于能够使用ModelMetadata上的Model属性访问值。然而,对于ASP.NET核心,我们似乎必须获得ModelExplorer的一个实例才能访问ModelMetadata的值

这是我尝试过的

代码语言:javascript
复制
foreach (ModelMetadata propertyMetadata in Html.ViewData.ModelMetadata.Properties)
{
    ModelExplorer explorer = propertyMetadata.GetModelExplorerForType(propertyMetadata.ModelType, null);

    // do something with explorer.Model

    // I also tried 
    ModelExplorer explorer2 = html.ViewData.ModelMetadata.GetModelExplorerForType(propertyMetadata.ModelType, null);
}

资源管理器返回属性的正确ModelType,但在这种情况下,explorer.Modelexplorer2.Model始终为空。

我如何正确地创建ModelExplorer,它将给我一个模型值?

EN

回答 1

Stack Overflow用户

发布于 2020-12-11 23:00:10

结果是,我可以使用委托PropertyGetter来获取值

下面是我所做的一个例子。

代码语言:javascript
复制
@{
    IEnumerable<ModelMetadata> properties = metadata.Properties.Where(metadata => metadata.ShowForDisplay).OrderBy(metadata => metadata.Order);
}

@foreach(var property in properties)
{
    <span>@(property.PropertyGetter(Model))</span>
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65240270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档