无法转换类型为PagedList.IPagedList的对象

时间:2019-10-09 15:09:32

标签: c# ajax asp.net-mvc partial-views pagedlist

我有一个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
      }
   }

上面的ajax调用的FileUpdate操作如下:

[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

FileListPartial.cshtml的第60行,我在上面的代码部分中也有上面提到的代码。

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

我看到一些同事told没必要强制使用IPagedList,但是如果我删除该案子,我会立即得到cannot convert from object to PagedList.IPagedList

因此,我被困在这一点上。如果您能对此有所了解,我将感到很高兴。

谢谢。

0 个答案:

没有答案