我有一个MVC PagedList,它工作得很好。我正在过滤该列表,过滤谓词将在往返过程中发送给客户端。我使用不起眼的ajax替换。我的寻呼机代码如下:
@Html.PagedListPager((IPagedList)Model.Items,
page => Url.Action("Filter",
new ClientSearch
{
Page = page,
PageSize = Model.PageSize,
Predicate = Model.Predicate
}),
PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(
new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "clients-list",
}))问题是,谓词参数太长了。应该是这样的。我得到了以下异常:
“请求筛选模块配置为拒绝查询字符串过长的请求。”
我不想为了允许长参数而改变web.config。我想在POST头中传递模型,而不是查询字符串参数。是否可以使用PagedList?
提前谢谢。
发布于 2014-04-13 15:51:41
我仍然不能确定PagedList是否支持发布大型数据,但我最终使用了以下解决方法。
我有一个post方法,它将模型post到控制器函数,并用结果替换部分视图内容。
function postToPage(url, size, predicate, replace) {
var data = {
size: size,
predicate: predicate
};
$.ajax({
url: url,
data: data,
type: 'POST',
success: function (result) {
$('#' + replace).html(result);
}
});
}我还有另一个函数来替换分页容器div中的URL,并将click事件连接起来以调用post方法。单击事件会停止事件传播,因此href属性中的URL将不会被使用。
function replaceHrefs() {
$('div[class = pagination-container').find('a').each(function (index, value) {
var url = value.href.toString();
value.addEventListener('click', function (event) {
event.stopPropagation();
post(url);
});
value.href = '#';
});我创建了post方法的自定义版本,以便从模型生成页面大小和谓词。
function post(url) {
postToPage(url, @Model.PageSize, '@Model.Predicate', 'clients-list');
}我必须将URL替换过程连接到两个位置:当文档准备就绪时和当ajax调用完成时。这些包含了我需要的所有案例。
$( document ).ajaxComplete(function() {
replaceHrefs();
});
$( document ).ready(function() {
replaceHrefs();
});我希望它能帮助一些人。
https://stackoverflow.com/questions/23029171
复制相似问题