Я пытаюсь фильтровать данные на основе запроса. Я использую частичное представление для отображения отфильтрованных данных. Однако в частичном представлении ничего не обновляется. Как я могу это исправить? КлассФильтровать данные на основе запроса и результата возврата с использованием частичного представления
Контроллер:
public IActionResult Index() {
IEnumerable<Organisation> organisations = _organisationRepository.GetAll().OrderBy(b => b.Name).ToList();
if (isAjaxRequest()) {
string text = Request.Form["text"].ToString();
return PartialView("_Organisations", _organisationRepository.GetByName(text).ToList());
}
return View(organisations);
}
private bool isAjaxRequest() {
return Request != null && Request.Headers["X-Requested-With"] == "XMLHttpRequest";
}
организации Вид:
<form asp-controller="Organisation" asp-action="Index">
<div class="form-inline">
<div class="form-group">
<label for="text">Filteren in organisaties</label>
<input type="text" name="text" id="text" required pattern="^([0-9]{4}|[a-zA-Z]+)$">
<label for="selected"></label>
<select name="selected" id="selected" class="form-control">
<option value="name">Naam</option>
<option value="postalcode">Postcode</option>
</select>
</div>
<button type="submit" class="btn btn-default" id="search">Zoeken</button>
</div>
</form>
<div id="partial">
@Html.Partial("_Organisations", Model);
</div>
Частичный вид:
<table class="table table-striped table-condensed table-bordered">
<tr>
<th>Naam</th>
<th>Adres</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@item.Name
</td>
<td>
@item.Location.ToString()
</td>
<td>
<a onClick="showForm(this, @item.OrganisationId)" href="#">Selecteer</a>
</td>
</tr>
}
Javascript Файл:
$("#search").click(function() {
$.ajax({
url: "Organisation/Index",
type: "post",
data: $("form").serialize(),
success: function (result) {
$("#partial").html(result);
}
});
});
Любая помощь будет оценена!
Это была опечатка! Спасибо, что сообщили мне, я изменил его в вопросе! – dddroog
Хорошо. В коде, который мы не видим, должна быть еще одна ошибка. Вы пытались проверить все звонки? 1. Поместите контрольную точку в свой javascript при вызове $ .ajax 2. Поместите контрольную точку у входа в контроллер действия индекса (работает в Visual Studio при отладке) 3. Вставьте результат частичного просмотра в переменную, прежде чем ее вернуть поставьте точку останова, чтобы убедиться, что вы получаете что-то из вида. 4. поместите вторую точку останова в Javascript, в функцию успеха Это хорошее начало. Сообщите нам, какие точки останова достигнуты или нет. –
Хорошо, поэтому достигнуты первые две точки останова. Когда я продолжил отладку, я обнаружил что-то странное. Когда я не вводил текст внутри поля ввода html, текст переменной пуст в контроллере, и он возвращает частичное представление, содержащее все элементы, содержащие «пустую» строку, которые в моем случае являются всеми элементами. Странно, когда я ввожу текст в поле ввода html, контроллер возвращает View (организации), после чего возвращает частичный вид, но ничего визуального не изменяется на странице. – dddroog