stronicowanie i wyszukiwarka

0

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;
})
1

porownaj obydwa zapytania ajax.

w tym po kliknieciu w searchButton wysylasz tablice z name = $a, zas w drugim ajaxie wysylasz sama wartosc nieopakowan w tablice i nienazwana, skad Binder ma wiedziec ze to jest name, a nie cos zupelnie innego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1