Как показать одну за другой запись в пользовательском интерфейсе, возвращающемся из Web API? - PullRequest
0 голосов
/ 19 февраля 2019

Только для информации:

Я не могу использовать нумерацию страниц (пропустить, взять), поскольку записи поступают из нескольких таблиц.Подробно вы можете проверить модель Report.

Я должен попытаться получить данные one by one в пользовательском интерфейсе из WebAPI.

Приведенный ниже код извлекает все записи одновременноно записи огромны, и это занимает больше минуты, что плохо для UX.

Модель

public class Report 
{
    public string Region { get; set; }
    public List<Country> CountryList { get; set; }
    public List<State> StateList { get; set; }
    public List<District> DistrictList { get; set; }
}

Web API

[HttpGet]
public HttpResponseMessage GetReports()
{
  var tempReports = this.mService.GetReports();
  if (tempReports == null)
  {
    return ErrorResult(HttpStatusCode.NotFound);
  }

  return OK(tempReports);
}

Сервис

public IEnumerable<Report> GetReports() 
{
List<int> totalValidRecords = ; //This comes from a table on the basic of which the report will be generated.

foreach(int id in totalValidRecords)
{
   List<Region> regions= //gets list of record from Region table.

   foreach(Region region in regions)
   {
      List<Country> countries= //gets list of countries from country table based on region.

      foreach(Country country in counties)
      {
        List<State> states = //gets list of states from State table based on country.

        foreach(State state in states)
        {
           List<District> districts = //gets list of districts from District table based on state.

           //Other logic which computes and access other rest of dependent tables data.
        }
      }
   }
  yield return report; 
}
}

1 Ответ

0 голосов
/ 20 февраля 2019

То, что вы хотите, называется WebSockets, а для .net у вас есть библиотека SignalR, которая позволяет создавать подключения к этим веб-сокетам, где вы будете отправлять данные на этот канал, когда внешний интерфейс отправляет запрос на подключение к нужному каналу и всем остальным.отправленные туда данные вы можете начать показывать в своем интерфейсе, это решение, которое требует определенных усилий для настройки, но я настоятельно рекомендую его вам.https://github.com/SignalR/SignalR

Пример: API запроса FrontEnd, API получает первый заполненный список 'регионов', отправляет каналу все регионы, интерфейс получает эти значения и заполняет некоторую переменную и отображает ее пользователю, и так далее.на ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...