我有一个项目,是在ASP.NET Core5.0框架上用C#编写的。
我试图通过使用ModelMetadata直接访问数据来手动呈现剃刀视图。在一个视图中,我希望遍历Html.ViewData.ModelMetadata中的所有属性,并手动获取每个属性的值。
在旧的ASP.NET MVC中,我习惯于能够使用ModelMetadata上的Model属性访问值。然而,对于ASP.NET核心,我们似乎必须获得ModelExplorer的一个实例才能访问ModelMetadata的值
这是我尝试过的
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.Model或explorer2.Model始终为空。
我如何正确地创建ModelExplorer,它将给我一个模型值?
发布于 2020-12-11 23:00:10
结果是,我可以使用委托PropertyGetter来获取值
下面是我所做的一个例子。
@{
IEnumerable<ModelMetadata> properties = metadata.Properties.Where(metadata => metadata.ShowForDisplay).OrderBy(metadata => metadata.Order);
}
@foreach(var property in properties)
{
<span>@(property.PropertyGetter(Model))</span>
}https://stackoverflow.com/questions/65240270
复制相似问题