Поэтому я пытаюсь найти лучший (самый удобный и эффективный) способ обновления html-таблицы с данными, запрашиваемыми в окне поиска.
Пользователь может что-то искать, набрав в окне поиска, я хочу перезагрузить эту HTML-таблицу без (видимых) обратных / повторных загрузок (если возможно) и заставить ее вести себя так, как будто она динамически обновляет данные.
Что у меня есть и чем я сейчас занимаюсь, так это: Razor Html.TextBox (...) и функция Javascript, которая выглядит следующим образом:
$(function () {
$('#txtSearchString').keyup(function () {
//Content to send
var searchvalue = $(this).val();
$.get('@Url.Action("Customers", "Home")', { "SearchValue": searchvalue });
});
});
Где 'txtSearchString'это имя / идентификатор Html.TextBox.Когда я что-то набираю в этом текстовом поле, он переходит к действию HttpGet, где я получаю «searchvalue», и я запрашиваю свою базу данных и возвращаю результаты, соответствующие моим требованиям. ПРИМЕЧАНИЕ , что это действие является тем же действием, что и начальное загруженное действие.
Когда я возвращаю свою модель (где находятся эти обновленные данные), я также отчетливо вижу при отладке, что у меня есть результаты обновления в моем контроллере, а также в моем представлении при переборе списка результатов (например, начальный)список содержит 100 элементов, обновленный список содержит 20), но все же, когда представление загружено, я вижу те же результаты, что и изначально загруженные, кажется, что оно не загружает представление в браузер.
Понятия не имею, почему это так.Я не знаю, является ли это лучшим способом сделать то, что я хочу, у меня нет опыта работы с частичными представлениями, и я не знаю, лучше ли использовать это вместо этого, но все же, что бы я ни использовал, я хочу понять, чточто происходит позади и приводит к такому поведению.
Если у вас есть какие-либо вопросы, вам нужно что-то прояснить, спросите меня.С уважением!
ОБНОВЛЕНИЕ:
Вот так я заполняю / обновляю свою HTML-таблицу значениями из моей модели:
<table class="table table-hover trCursor">
<thead>
<tr>
<th scope="col">
@Html.ActionLink("Id", "Customers", new { sortOrder = ViewBag.DateSortParm })
</th>
<th scope="col">
@Html.ActionLink("Name", "Customers", new { sortOrder = ViewBag.NameSortParm })
</th>
<th>...</th>
</tr>
</thead>
@foreach (var customer in Model.Customers)
{
<tr onclick="location.href='@(Url.Action("CustomerDetail", "Customer", new { Id = customer.ID }))'">
@Html.HiddenFor(c => customer.ID)
<td scope="row">@customer.ID</td>
<td>@customer.CustomerName</td>
<td>...</td>
</tr>
}
Где я могу видеть, что "Model.Customers" имеет обновленные значения при итерации по нему.