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

时间:2019-04-10 10:42:56

标签: c# asp.net-core foreach razor-pages data-transfer-objects

我需要在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实现吗?或其他任何想法,谢谢

1 个答案:

答案 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>
}