asp.net MVC显示模型属性只有值?

gdrx4gfi  于 2023-04-08  发布在  .NET
关注(0)|答案(2)|浏览(173)

好吧,所以我的模型包含超过200个属性或字段,使用实体框架,这反映到数据库中,1行200列。在视图中显示此模型时,希望显示仅具有数据或值的字段或属性。
现在我可以通过每一个,并检查它是否有价值或没有!但我想知道是否有一个更好的方法,所以我不必加载大厅模型,这将是90%空!

mefy6pfw

mefy6pfw1#

是的,你可以使用反射,这里有一个例子

@{
    var properties = Model.GetType().GetProperties();
}

@foreach(System.Reflection.PropertyInfo info in properties){
   var value = info.GetValue(Model,null);
   if(value!=null){
       <b>@info.Name</b> <i>@value</i>
   }
}

这里是一个工作demo
在演示中,我设置了问题的值,我保持了答案属性为默认值“空”,结果问题将被显示,答案将不会,因为它有空值

EDITED获取显示属性值,这里可以做什么

// to get the display Name
var da =info.GetCustomAttributes(typeof(DisplayAttribute),false)
            .Cast<DisplayAttribute>();
if(da.Count()>0) //to ensure that there is a [Display attribute
{
        <p>Display Name:<i>@da.First().Name</i></p>
}

我也修改了演示以反映结果
希望对你有帮助

afdcj2ne

afdcj2ne2#

@foreach (var property in ViewData.ModelMetadata.Properties.Where(p => p.PropertyGetter(Model) != null)) {
    <p><b>@property.GetDisplayName()</b> <i>@(property.IsEnumerableType ? string.Join(',', property.PropertyGetter(Model)) : property.PropertyGetter(Model))</i></p>
}

相关问题