我有一个相当简单的网站,其中包含搜索部分视图和列表部分视图。它们使用多个模型汇总到索引视图中。
一切都很好。除非我单击网格列标题以排序或尝试寻呼到下一个数据列表,否则网格将返回空白状态。如果我重新提交相同的搜索条件,则网格将重新填充所有适用的数据,这些数据已正确排序或分页。
我已经跟踪了这个行为,因为WebGrid将它的分页和排序机制设置为GET而不是POST。显然,我的所有模型数据都不在提交中。
是不是有办法让WebGrid进行POST以便数据标记一起?对于WebGrid来说,似乎非常适得其反,因为它不包含想要分页或排序的数据。
答案 0 :(得分:6)
老问题,但只是添加一个参考:
我更喜欢this link
建议的解决方案使用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();
});
答案 1 :(得分:2)
这可能不是最优雅的解决方案,但它有效:
在视图中将模型添加到会话中:
Session.Add( "Model", Model );
然后,在控制器中的Index GET Action(或GET Action的任何内容)中,只需检查值并调用POST操作:
if ( Session[ "Model" ] != null )
this.Index( Session[ "Model" ] as MyModel );
相应地清理会话。
答案 2 :(得分:0)
继上面的JQuery答案(这给我带来了成功,谢谢!)不要忘记取消它在幕后添加的webgrid自己的魔法方法。否则,您最终可能会在POST的同时发生另一个ajax GET。
在绑定到“页面”和“排序”链接之前,请执行以下操作: -
$("#MyWebGridID").undelegate();