Невозможно привести объект типа к типу PagedList.IPagedList - PullRequest
0 голосов
/ 09 октября 2019

У меня есть cshtml, который вызывает другой partial view, как показано ниже:

      <div class="table-responsive">
           <div id="divFile">
                @{Html.RenderAction("FileListPartial", "Evrak"); }
           </div>
      </div>

И это частичное представление (FileListPartial) использует IPagedList, как показано ниже:

@model IPagedList<FileTopInfoVM>
@using PagedList.Mvc
@using PagedList

<div id="divFile">
    <div class="row">
    @*divs go on*@
    <div class="col-md-offset-3">
        @Html.PagedListPager((IPagedList)Session["FileTopInfo"], page => Url.Action("FileListPartial", "File", new { Model, page, pageSize = 20 }), new PagedListRenderOptions { LiElementClasses = new[] { "file" } })
    </div>
</div>

Вещиусложняюсь после того, как я вызвал следующий метод ajax:

function Update(id, btnId) {
    if (btnId.id == "btnFile") {
        $('.se-pre-con').fadeIn('fast');
        setTimeout(function () {
            jQuery.ajax({
                url: "/File/FileUpdate",
                type: 'POST',
                traditional: true,
                data: { id: id },
                async: false,
                success: function (result) {
                    console.log("success works");
                    $("#divFile").append(result);
                },
                error: function () {
                },
            });
            $('.se-pre-con').fadeOut('fast');
        }, 500);
    } else if (btn.id == "btnJudge") {
         //function goes on
      }
   }

Это действие FileUpdate, которое вызывается выше ajax, выглядит следующим образом:

[HttpPost]
public PartialViewResult FileUpdate(long id)
{
     List<FileTopInfoVM> fileTopInfo = new List<FileTopInfoVM>();

     //do stuff

     var pagedList = fileTopInfo.ToPagedList(1, 20);

     Session["file"] = fileTopInfo.Skip(0).Take(5);

     Session["FileTopInfo"] = fileTopInfo.Skip(0).Take(5);

     return PartialView("FileListPartial", pagedList);
}

Наконец, когда я нажимаю кнопку, которая вызываетвышеупомянутый ajax, я получаю POST http://localhost:3730/File/FileUpdate 500 (Internal Server Error).

Когда я нажимаю на эту ошибку, экран консоли направляет меня на вкладку Сеть, где я получаю более подробную информацию о том, что происходит. Там я вижу, что [InvalidCastException: Unable to cast object of type [FileTopInfoVM]; to type PagedList.IPagedList] ASP._Page_Views_File_FileListPartial_cshtml.Execute() in C:\Project\...\Views\File\FileListPartial.cshtml:60

В строке 60 в FileListPartial.cshtml у меня есть тот код, который я также упомянул выше, в своем разделе.

@Html.PagedListPager((IPagedList)Session["FileTopInfo"], page => Url.Action("FileListPartial", "File", new { Model, page, pageSize = 20 }), new PagedListRenderOptions { LiElementClasses = new[] { "file" } }

Я видел, что некоторые коллеги сказал , что разыгрывать IPagedList не нужно, но если я уберу это дело, я сразу получу это cannot convert from object to PagedList.IPagedList.

Итак, я застрял в этой точке. Я был бы рад, если бы кто-нибудь из вас смог это осветить.

Заранее спасибо.

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