显示dto-list的所有字段,c#

Display all fields of dto-list, c#

我需要在 razorpage.I 中显示 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 实现吗?或者任何其他想法,谢谢

在您的视图中使用反射来获取对象的 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>
}