Показать все поля dto-list, c#

Мне нужно отобразить все поля списка dto в razorpage. У меня есть около 70 полей каждого объекта dto.

теперь у меня есть такой код:

    @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 раз.

Как я могу это сделать? Должен ли я изучить реализацию IEnumerable для моего DTO? или любые другие идеи, спасибо

Это довольно широкий вопрос. Каждый компонент сетки делает это с помощью отражения. Однако отражение стоит дорого, поэтому они заботятся о том, чтобы сделать это максимально эффективным способом, кэшируя информацию о типе и т. д. Если вам В самом деле нужна сетка с открытым концом, DataTable как DTO, вероятно, является лучшим выбором. Еще один вариант — использовать сетку Javascript, которая загружает данные из конечной точки HTTP API, например, контроллера веб-API. Легче найти высококачественные сетки JavaScript бесплатно.

Panagiotis Kanavos 10.04.2019 12:51

@PanagiotisKanavos мне нужно сделать это с помощью С#, потому что у меня есть другие места в моем коде, где мне нужно улучшить такую ​​логику (бизнес-уровень)

Giacomo 10.04.2019 13:18

Если вы настаиваете на динамическом доступе к свойствам, у вас есть проблемы со ссылкой от Мустафы Ларроуча?

Edward 11.04.2019 08:21
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
726
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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>
}

Другие вопросы по теме