使用jquery更新Ajax.RouteLink参数
我有一个表格,列出了在我的网站上注册的用户。该页面包含一个类似于过滤器的文本框:一旦用户在文本框中键入内容,表就会被过滤,因此只检索名称包含文本框值的用户 这是使用jquery完成的。它发送到控制器操作,该操作返回一些json,并对其进行解析,以更新用户列表。这很有效 现在,此用户列表中必须有分页。非常简单,只有“上一个”和“下一个”按钮,它将获取上一个或下一个10个结果。这些是Ajax.routeLink。但是,我当然必须将正确的页码发布到控制器操作,以便它知道要检索哪些用户。问题就在这里:我不知道怎么做。从何处获取此值?我试过:使用jquery更新Ajax.RouteLink参数,jquery,asp.net-mvc,ajax,Jquery,Asp.net Mvc,Ajax,我有一个表格,列出了在我的网站上注册的用户。该页面包含一个类似于过滤器的文本框:一旦用户在文本框中键入内容,表就会被过滤,因此只检索名称包含文本框值的用户 这是使用jquery完成的。它发送到控制器操作,该操作返回一些json,并对其进行解析,以更新用户列表。这很有效 现在,此用户列表中必须有分页。非常简单,只有“上一个”和“下一个”按钮,它将获取上一个或下一个10个结果。这些是Ajax.routeLink。但是,我当然必须将正确的页码发布到控制器操作,以便它知道要检索哪些用户。问题就在这里:我
- 在控制器中设置ViewData键,但当我返回Json结果时,该值永远不会更新
- 我尝试在json结果中添加上一页和下一页的页码,但结果如何?RouteLink生成一个包含各种数据的长链接,我不知道如何使用jquery轻松修改其中的一些参数
- 我试图生成链接服务器端并将其添加到Json中,但我无法从控制器访问ViewContext,这是在我的操作中实例化新AjaxHelper所需的。或者别的什么
function searchUsers() {
$.post("/Search/Users", $("#searchUsersForm").serialize(), function(data) {
$('#searchResultsTable tr').remove();
$.each(data.Result, function(index, result) {
$('#searchResultsTable').append('<tr><td>' + result.Username + '</td></tr>');
});
if (data.PreviousPageNumber != null)
alert('previous: ' + data.PreviousPageNumber);
if (data.NextPageNumber != null) {
alert('next: ' + data.NextPageNumber);
}
}, "json");
}
<form id="searchUsersForm">
<input type="text" name="userName" id="userName" onkeyup="searchUsers()" onchange="searchUsers()" />
</form>
<%
Response.Write("<span class='pagingPrevious'>" + Ajax.RouteLink("< previous", "User-List", new { pageNumber = ((int?)ViewData["PreviousPageNumber"]).Value }, new AjaxOptions() { InsertionMode = InsertionMode.Replace, UpdateTargetId = "profilePageInbox" }) + "</span>");
Response.Write("<span class='pagingNext'>" + Ajax.RouteLink("next >", "User-List", new { pageNumber = ((int?)ViewData["NextPageNumber"]).Value }, new AjaxOptions() { InsertionMode = InsertionMode.Replace, UpdateTargetId = "profilePageInbox" }) + "</span>");
%>
public ActionResult SearchUsers(string userName)
{
// fetch data
ViewData["PreviousPageNumber"] = userViewModel.PreviousPageNumber; // does not work
ViewData["NextPageNumber"] = userViewModel.NextPageNumber; // does not work
return this.Json(userViewModel);
}
我只是遇到了同样的问题,并找到了一个非常简单的解决方案。在花了一天多的时间摆弄桌子和其他东西之后,我下载了这个不错的组件。
由于它没有完全实现我想要的功能(实时过滤),我编写了一个小的JQuery插件来处理这个缺失的功能 对于使用文本框进行过滤,您必须执行以下操作:在插件源代码中查找此行
// Binding the Button events
$('.' + opts.applyButtonClass).click(function () {
...
现在用keyup替换click部分,就这样了
我建议实现最少的字母数,这样就不会过滤一个“a”,而是在指定的长度后应用过滤器,如:
textbox.val().length>3
我遇到了同样的问题,找到了一个非常简单的解决方案。在花了一天多的时间摆弄桌子和其他东西之后,我下载了这个不错的组件。由于它没有完全实现我想要的功能(实时过滤),我编写了一个小的JQuery插件来处理这个缺失的功能 对于使用文本框进行过滤,您必须执行以下操作:在插件源代码中查找此行
// Binding the Button events
$('.' + opts.applyButtonClass).click(function () {
...
现在用keyup替换click部分,就这样了
我建议实现最少的字母数,这样就不会过滤“a”,而是在指定的长度后应用过滤器,如:
textbox.val().length>3
感谢您的延迟回复!目前还没有开发MVC应用程序,但一旦我回到MVC应用程序,我一定会尝试一下:-)谢谢你的回复!目前还没有开发MVC应用程序,但我一回到MVC应用程序,肯定会尝试一下:-)