我有一張表列出了在我的網站上註冊的用戶。該頁面包含一個充當過濾器的文本框:只要用戶在文本框中鍵入內容,該表就會被過濾,因此只有檢索到名稱包含文本框值的用戶。使用jquery更新Ajax.RouteLink參數
這是使用jQuery做。它發佈到一個控制器動作,它反過來返回一些json,解析這個動作以更新用戶列表。這很好。現在
,該用戶列表必須對自己的分頁。很簡單,只有前一個和下一個按鈕,它們將獲取前一個或下一個10個結果。這些是Ajax.RouteLinks。但是,我當然必須將正確的頁碼發佈到控制器操作,以便知道要檢索哪些用戶。這就是問題所在:我不知道該怎麼做。我從哪裏得到這個價值?我試過了:
- 在控制器中設置一個ViewData鍵,但是當我返回一個Json結果時,這個值永遠不會更新。
- 我試圖在JSON結果添加一個和下一個頁面編號,但是然後呢?該Ajax.RouteLink產生與各種數據的長鏈接,我不知道怎樣才能使用jQuery來輕鬆地修改一些參數有
- 我試圖生成鏈接的服務器端,並添加到JSON,但我無法從控制器訪問ViewContext,這需要在我的操作中實例化新的AjaxHelper。管他呢。
如果有幫助,下面是一些代碼。正如你在jQuery代碼中看到的那樣,正確的pagenumbers會在那裏被提醒。但是,如何將其納入路線連接?或者其他任何聰明的方式來實現這一點?謝謝!
jQuery代碼:
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");
}
HTML:
<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);
}
感謝您的答覆遲到了!目前沒有在MVC應用程序上工作,但只要我回到一個,我會定義嘗試一下:-) – Razzie 2010-05-12 14:45:13