Witam, mój problem polega na tym, że gdy wyszukuje daną rzecz w wyszukiwarce i ta operacja kończy się powodzeniem oraz w PagedListPage widać również zmiany po owym wyszukiwaniu, to gdy jednak chcę przejść na drugą stronę wyszukanych danych, to zwracana jest druga strona, ale nie uwzględniając danych z wyszukiwarki. W skrypcie do stronicowania dodałem data: $("#searchInput").val(), ale to jakoś specjalnie nie pomogło.
controller:
public ActionResult List(string name = null, int page = 1)
{
var model =
repository.GetMeals()
.Where(r => name == null || r.Name.StartsWith(name))
.Select(r => new Meal
{
Id = r.Id,
Name = r.Name,
Protein = r.Protein,
Carbohydrates = r.Carbohydrates,
Fat = r.Fat,
Calories = r.Calories
}).ToPagedList(page, 50);
if(Request.IsAjaxRequest())
{
return PartialView("_Meals", model);
}
return View(model);
}
cshtml:
<div class="col-md-6 col-md-offset-4">
<form method="get" action="@Url.Action("List")" class="form-inline">
<input type="search" class="form-control" id="searchInput">
<button type="submit" class="btn btn-info" id="searchButton">Szukaj po nazwie</button>
</form>
</div>
@Html.Partial("_Meals", Model);
meals.cshtml
<div id="meals">
<div class="pagedList col-md-6 col-md-offset-4 ">
@Html.PagedListPager(Model, page => Url.Action("List", new { page }),
PagedListRenderOptions.MinimalWithItemCountText)
</div>
// somethings...
</div>
js:
$(document).on("click", ".pagedList a", function () {
var $a = $(this);
$.ajax({
url: $a.attr("href"),
data: $("#searchInput").val(),
type: 'GET'
})
.done(function (data) {
$("#meals").replaceWith(data);
});
return false;
})
$(document).on("click", "#searchButton", function () {
var $a = $("#searchInput").val();
$.ajax({
type: 'GET',
url: '/Meal/List',
data: { name: $a }
})
.done(function (data) {
$("#meals").replaceWith(data);
});
return false;
})