У меня есть 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
.
Итак, я застрял в этой точке. Я был бы рад, если бы кто-нибудь из вас смог это осветить.
Заранее спасибо.