我需要在razorpage中显示dto-list的所有字段。每个dto对象大约有70个字段。
现在我有这样的代码:
@foreach (var ft in Model.DtoForeignClients)
{
<tr>
<td>@ft.Name</td>
<td>@ft.Head</td>
<td>@ft.Customer</td>
<td>@ft.Item</td>
//~66 another fields
</tr>
它可以工作,但是我想改善我的代码。我想要做某事:
@foreach (var ft in Model.DtoForeignClients)
{
<tr>
@for (int i = 0; i<ft.CountOfFields;i++)
<td>@ft[i]</td>
</tr>
因为我不想重复约70次。
我该怎么做?我应该为我的DTO研究IEnumerable实现吗?或其他任何想法,谢谢
答案 0 :(得分:1)
在视图中使用反射获取对象的FieldInfo []。将DtoForeignClient
替换为您的真实类型ft
。
@using System.Reflection;
@{
var fields = typeof(DtoForeignClient).GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
}
@foreach (var ft in Model.DtoForeignClients)
{
<tr>
@foreach(FieldInfo f in fields)
{
<td>@f.GetValue(ft)</td>
}
<tr>
}