Пейджинг не работает - PullRequest
0 голосов
/ 02 мая 2018

Я видел статью в Microsoft, чтобы добавить подкачку в c # . Следуя этой статье шаг за шагом, я столкнулся с некоторыми трудностями при адаптации ее к моему мнению. Я постараюсь объяснить себя лучше, отдавая часть своего кода:

Контроллер:

[HttpGet("searchmovie")]
public IActionResult Search(string option, string searchmovie, int? page, string currentFilter)
{
    if (search != null)
    {
        page = 1;
    }
    else
    {
        search = currentFilter;
    }
    SearchViewModel data = new SearchViewModel();
    int pageSize = 4;
    IEnumerable<SearchDataItemViewModel> searchMovie =
    Mapper.Map<IEnumerable<SearchDataItemViewModel>>(_unitOfWork.Movies.GetByString(search));
    var searchMoviesP = Helpers.PaginatedList<SearchDataItemViewModel>.CreateAsync(searchMovie,page ?? 1, pageSize);
    data.SearchMovie = searchMoviesP;
    return View("Search", data));
}

и это мое мнение:

<li class="tab-2 tabs-list-item">
    <ul>
        <li>
            <h3 class="tabs-header">LoremIpsum</h3>
            <ul class="content-full col-1">
                @foreach (var mv in Model.SearchMovie)
                {
                    if (mv != null)
                    {
                        <li>
                            <div class="to-do-desc">
                                <p>@mv.Text</p>
                            </div>
                        </li>
                    }
                    else
                    {
                        <li><p>No results</p></li>
                    }
                }
            </ul>
        </li>
    </ul>
    {
        //Website.Helpers.PaginatedList<Website.ViewModels.SearchDataItemViewModel> PaginatedModel = Model as Website.Helpers.PaginatedList<Website.ViewModels.SearchDataItemViewModel>;
        //this is what I tried but of course the there was an error of type :
        //Cannot convert type 'Website.ViewModels.SearchViewModel' to 'Website.Helpers.PaginatedList<Website.ViewModels.SearchDataItemViewModel>

        string prevDisabled = !PaginatedModel.HasPreviousPage ? "disabled" : "";
        ..string nextDisabled = !PaginatedModel.HasNextPage ? "disabled" : "";
    }

    <a asp-controller="Movies" asp-action="Search"
       asp-route-page="@(PaginatedModel.PageIndex - 1)"
       asp-route-currentFilter="@ViewData["FilterParam"]"
       class="btn btn-default @prevDisabled">
        Previous
    </a>

    <a asp-controller="Movies" asp-action="Search"
       asp-route-page="@(PaginatedModel.PageIndex + 1)"
       asp-route-currentFilter="@ViewData["FilterParam"]"
       class="btn btn-default @nextDisabled">
        Next
    </a>
</li>

Ребята, вы не знаете, какой компонент модели я должен передать представлению о документе Microsoft. Я застрял здесь на некоторое время, поэтому некоторые эльпы были бы признательны Спасибо !!!

1 Ответ

0 голосов
/ 02 мая 2018

Вы делаете это в вашем контроллере:

var searchMoviesP = Helpers.PaginatedList<SearchDataItemViewModel>.CreateAsync(searchMovie,page ?? 1, pageSize);
data.SearchMovie = searchMoviesP;

Таким образом, нумерованный список является вложенным свойством SearchMovie вашей модели представления.

Но, на ваш взгляд, вы пытаетесь это сделать:

Model as Website.Helpers.PaginatedList<Website.ViewModels.SearchDataItemViewModel>

Это не сработает, потому что Model - это SearchViewModel. Вместо этого вы хотели бы сделать следующее:

Model.SearchMovie as Website.Helpers.PaginatedList<Website.ViewModels.SearchDataItemViewModel>

Теперь вы получаете доступ к тому же свойству модели, для которого вы предварительно установили нумерованный список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...