1
我有一個頁面,是用戶列表。控制器的索引功能是負責顯示用戶頁面的操作。用戶可以選擇這些用戶並選擇刪除它們。如何保持此場景爲1次往返?
我使用ajax請求執行刪除操作,但是那麼該頁面的用戶列表已過期。所以我重新加載頁面,因爲我想重新使用索引操作,並且所有查詢字符串參數仍然存在。這意味着我正在執行兩次往返。我如何避免這種情況?
function DeleteUsers()
{
var selectedUserIds = ;
$.post("/Account/DeleteUsers",
{
userIds: selectedUserIds
},
function (data) {
if(data.status == "success"){
location.reload();
}
});
}
指數函數:
[AuthorizeActionFilter]
public ActionResult Index(UserModel model)
{
ViewData["PageTitle"] = ServiceSite.Resources.Resources.REGISTERED_USERS;
ViewBag.MaxUsersPerPage = PAGE_MAX_COUNT;
if(model == null)
{
model = new UserModel();
}
int totalCount = 0;
//Get users
model.Users = CADC.GetUsers(AccountController.GetRegionID(), model.CompanyID, out totalCount,
model.SortField, model.PageNumber * PAGE_MAX_COUNT, PAGE_MAX_COUNT, model.Ascending, User.Identity.Name);
model.TotalUserCount = totalCount;
int totalPages = totalCount/PAGE_MAX_COUNT;
model.TotalPages = (totalCount % PAGE_MAX_COUNT) == 0 ? totalPages : totalPages + 1;
return View(model);
}
和模型:
public class UserModel
{
public bool Ascending { get; set; }
public int PageNumber { get; set; }
public string SortField { get; set; }
public int TotalUserCount { get; set; }
public int TotalPages { get; set; }
public long CompanyID { get; set; }
public List<User> Users { get; set; }
public UserModel()
{
this.Ascending = true;
this.PageNumber = 0;
this.SortField = "FirstName";
this.CompanyID = 0;
this.TotalUserCount = 0;
this.TotalPages = 0;
}
}
您是否真的需要在刪除操作後重新獲取列表?當AJAX請求報告成功時,難道你不能通過JavaScript從HTML中移除這些行嗎?那和重新提取整個列表有什麼區別? – David 2014-11-14 18:44:43
這是一種常見的做法嗎?頁面上也有總計,我可以計算,但分頁會令人困惑。該頁面顯示「顯示1到50的250」。因此,如果我刪除了10個設備,我想我可以將其更新爲「顯示240至240箇中的1至40個」。 – Dave 2014-11-14 18:49:21
另一個選擇可能是讓刪除操作本身返回更新的列表,然後將頁面元素重新綁定到該列表。 – David 2014-11-14 18:50:14