我有一个页面,它在表单上包含许多参数并将它们发布到操作中。它返回了许多需要分页的搜索结果。我的寻呼机使用ActionLink;
<%= Html.ActionLink(i.ToString(), "Basic", new { page = (i - 1) })%>
结果如预期的那样回归,但当我点击第二页时,它会转到默认的Action,而不是标记为post的那个。表单值不会再次提交,第二页显示的结果是默认结果,而不是带参数的过滤器。
我不确定如何解决这个问题?一种方法是将表单值保存到帖子的数据库中,然后在默认操作中将其读回来,但这似乎有点过分。
谢谢!
答案 0 :(得分:2)
MVCContrib Grid和Pager处理此特定方案。你可以编写自己的,但我会推荐Grid和Pager UI助手。
http://mvccontrib.codeplex.com/
private string CreateQueryString(NameValueCollection values)
{
var builder = new StringBuilder();
foreach(string key in values.Keys)
{
if(key == _pageQueryName)
//Don't re-add any existing 'page' variable to the querystring - this will be handled in CreatePageLink.
{
continue;
}
foreach(var value in values.GetValues(key))
{
builder.AppendFormat("&{0}={1}", key, HttpUtility.HtmlEncode(value));
}
}
return builder.ToString();
}
答案 1 :(得分:1)
我遇到了同样的情况。 当用户点击“上一个”或“下一个”链接时,我选择使用ajax表单发帖。
遵循javascript功能。
function searchResultsPage(pageNum)
{
$("#searchResultPageNum").val(pageNum);
var frm = $("form#ajaxSearch");
$.post(frm.attr('action'),
frm.serialize(),
function(rData) {
$("#rvwLstFrmContainer").html(rData);
});
}
其中'searchResultPageNum'是隐藏字段,用于反映要加载的新页码。
'ajaxSearch'是ajax表单id,使用Html helper为AjaxForm呈现。
'rvwLstFrmContainer'是包含结果的div。
社区!抱歉,关于格式错误的代码。无法正确发布