2

我有一个相当简单的站点,其中包含搜索部分视图和列表部分视图。它们使用多个模型汇总到索引视图中。

一切安好。除非我单击网格列标题进行排序或尝试分页到下一个数据列表,否则网格返回为空。如果我重新提交相同的搜索条件,则网格会重新填充所有适用的数据,这些数据已正确排序或分页。

我将这种行为归结为 WebGrid 将其分页和排序机制设置为 GET 而不是 POST。所以很明显我所有的模型数据都没有提交。

有没有办法让 WebGrid 发布以便数据标签一起发布?对于不包含想要分页或排序的数据的类,WebGrid 似乎适得其反。

4

3 回答 3

6

老问题,但只是为了添加参考:

我更喜欢此链接建议的解决方案

使用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();
        });
于 2013-10-29T01:15:27.010 回答
2

这可能不是最优雅的解决方案,但它有效:

将模型添加到视图中的会话:

Session.Add( "Model", Model );

然后,在控制器中的索引 GET 操作(或任何 GET 操作)中,只需检查值并调用 POST 操作:

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

相应地清理您的会话。

于 2013-04-01T20:14:32.390 回答
0

除了上面的 JQuery 答案(这给我带来了成功,谢谢!)不要忘记取消它在幕后添加的 webgrid 自己的魔法方法。否则,您最终可能会在 POST 的同时发生另一个 ajax GET。

在绑定到“页面”和“排序”链接之前,请执行以下操作:-

    $("#MyWebGridID").undelegate();
于 2016-01-05T15:49:17.520 回答