2014-11-14 52 views
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; 
    } 

}

+1

您是否真的需要在刪除操作後重新獲取列表?當AJAX請求報告成功時,難道你不能通過JavaScript從HTML中移除這些行嗎?那和重新提取整個列表有什麼區別? – David 2014-11-14 18:44:43

+0

這是一種常見的做法嗎?頁面上也有總計,我可以計算,但分頁會令人困惑。該頁面顯示「顯示1到50的250」。因此,如果我刪除了10個設備,我想我可以將其更新爲「顯示240至240箇中的1至40個」。 – Dave 2014-11-14 18:49:21

+1

另一個選擇可能是讓刪除操作本身返回更新的列表,然後將頁面元素重新綁定到該列表。 – David 2014-11-14 18:50:14

回答

0

我同意@大衛的意見。在AJAX成功塊中,刪除剛剛刪除的行,這些行基於您請求刪除的內容。

分頁確實比較複雜;要麼以相同的方式調整它,要麼修改所有內容以在Javascript中使用具有綁定元素的正確視圖模型 - 請參閱AngularJS或其他此類框架。