我如何得到我的WebGrid到POST而不是在我的MVC4网站排序或分页操作过程中得到什么?(How

2019-08-18 17:34发布

我有一个相当简单的网站,搜索局部视图和上市局部视图。 他们卷起使用多个模型到索引视图。

一切都好。 除了当我点击格列标题进行排序或企图页面数据的下一个上市,电网回来空。 如果我重新提交相同的搜索条件,然后将网格排序或正确分页所有适用的数据重新填充。

我已经追踪这种行为降低到了的WebGrid建立它的分页和排序机制,为GET而不是POST的事实。 所以,很显然我所有的模型数据都不放过提交。

是不是有办法让的WebGrid沿POST所以数据的标签? 作为一类不包含数据的一个希望页面或排序似乎对的WebGrid相当适得其反。

Answer 1:

这可能不是最完美的解决方案,但它的工作原理:

模型添加到视图您的会议:

Session.Add( "Model", Model );

然后,在指数取得动作在你的控制器(或任何GET动作是),只是检查值并调用POST操作:

if ( Session[ "Model" ] != null )
    this.Index( Session[ "Model" ] as MyModel );

清理您的会话相应。



Answer 2:

老问题,但只是增加一个参考:

我优选在所建议的解决方案这个链接

解决了使用JQuery问题:

var links = $('a[href*=page], a[href*=sort]'), form = $('form');
links.click(function () {
            form.attr("action", this.href);
            $(this).attr("href","javascript:");
            form.submit();
        });


Answer 3:

继JQuery的答案以上(这给我带来了成功,谢谢!)不要忘记undelegate的的的WebGrid自己神奇的方法,它增加了幕后。 否则,你最终可能会与另一个阿贾克斯在同样的时间,您的文章出现。

结合之前的“页面”和“排序”链接做到这一点: -

    $("#MyWebGridID").undelegate();


文章来源: How do I get my WebGrid to POST instead of GET during a sort or paging operation in my MVC4 site?