我有一个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
。
因此,我被困在这一点上。如果您能对此有所了解,我将感到很高兴。
谢谢。