Моя проблема, вероятно, что-то очевидное или простое, но я не могу понять это.
У меня есть кнопка, которая при нажатии извлекает данные JSON из конечной точки API (из другой компании). Эта конечная точка возвращает более 30000 записей.
Когда данные были получены, я показываю их на передний план с соответствующей моделью. Это все отлично работает.
Я добавил окно поиска, которое обрабатывается на стороне сервера, когда задано значение поиска, оно возвращается к той же конечной точке, которая извлекает данные, однако, если данные уже были загружены, я не хочу получать данные снова. Поэтому я подумал, что могу просто использовать модель свойств данных, чтобы проверить, не является ли она пустой. Это, однако, не работает.
Код выглядит следующим образом:
Страница бритвы бэкэнда:
public class IndexModel : PageModel
{
private readonly IGetDataService _getDataService;
[BindProperty]
public List<DataModel> DataModel { get; set; }
public string CurrentFilter { get; set; }
public IndexModel(IGetDataService dataService)
{
_getDataService = dataService;
}
public async Task<IActionResult> OnGetLoadData(string searchString)
{
CurrentFilter = searchString;
List<DataModel> data = null;
// Check if data has already been retrieved
if (DataModel == null)
data = await _getDataService.ReadAll(new Uri("https://restapi.xxxxx"));
else
data = DataModel;
if (!String.IsNullOrEmpty(searchString))
{
data.Where(s =>
s.field1.Contains(searchString) ||
s.field2.Contains(searchString) ||
s.field3.Contains(searchString) ||
s.field4.Contains(searchString)
);
}
DataModel = data;
return Page();
}
}
Код переднего конца:
@page "{handler?}"
@model IndexModel
@{
ViewData["Title"] = "Data page";
}
<form asp-page-handler="LoadData" asp-route-id="" method="get">
<button id="lurvink-button" class="btn btn-primary">
Get Data
</button>
</form>
@if (Model.DataModel != null)
{
<form class="form-group has-search" asp-page-handler="LoadData" method="get">
<span class="fa fa-search form-control-feedback"></span>
<input type="text" class="form-control" placeholder="Search" name="SearchString" value="@Model.CurrentFilter">
</form>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.DataModel[0].field1)
</th>
<th>
@Html.DisplayNameFor(model => model.DataModel[0].field2)
</th>
<th>
@Html.DisplayNameFor(model => model.DataModel[0].field3)
</th>
<th>
@Html.DisplayNameFor(model => model.DataModel[0].field4)
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.DataModel)
{
<tr>
<td>@item.field1</td>
<td>@item.field2</td>
<td>@item.field3</td>
<td>@item.field4</td>
</tr>
}
</tbody>
</table>
}