首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PagedList参数太长

PagedList参数太长
EN

Stack Overflow用户
提问于 2014-04-12 18:30:38
回答 1查看 788关注 0票数 1

我有一个MVC PagedList,它工作得很好。我正在过滤该列表,过滤谓词将在往返过程中发送给客户端。我使用不起眼的ajax替换。我的寻呼机代码如下:

代码语言:javascript
复制
@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?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-04-13 15:51:41

我仍然不能确定PagedList是否支持发布大型数据,但我最终使用了以下解决方法。

我有一个post方法,它将模型post到控制器函数,并用结果替换部分视图内容。

代码语言:javascript
复制
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将不会被使用。

代码语言:javascript
复制
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方法的自定义版本,以便从模型生成页面大小和谓词。

代码语言:javascript
复制
function post(url) {
    postToPage(url, @Model.PageSize, '@Model.Predicate', 'clients-list');
}

我必须将URL替换过程连接到两个位置:当文档准备就绪时和当ajax调用完成时。这些包含了我需要的所有案例。

代码语言:javascript
复制
$( document ).ajaxComplete(function() {
    replaceHrefs();
});

$( document ).ready(function() {
    replaceHrefs();
});

我希望它能帮助一些人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23029171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档