2017-01-09 58 views
0

我正在使用asp,net core並使用教程創建排序的分頁和搜索頁面(索引)。一旦我從這個頁面編輯一個項目,控制器總是將我轉回到默認索引頁面。我如何返回到以前的網址。非常感謝。 這是我的控制器文件的一部分。如何在ASP.NET Core中編輯之後返回上一個上一個URL

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public async Task<IActionResult> Edit(int id, Bind("id,UserPassword,user")] UserProfiles userProfiles) 
    { 

     var users = from u in _context.UserProfiles 
        select u; 
     if (id != userProfiles.id) 
     { 
      return NotFound(); 
     } 

     if (ModelState.IsValid) 
     { 
      try 
      { 
       _context.Update(userProfiles); 
       await _context.SaveChangesAsync(); 
      } 
      catch (DbUpdateConcurrencyException) 
      { 
       if (!UserProfilesExists(userProfiles.id)) 
       { 
        return NotFound(); 
       } 
       else 
       { 
        throw; 
       } 
      } 
      // *************** 
      // Redirect to the previous URL,i.e. the Index 
      return Redirect(TempData["PreviousURL"].ToString()) ; 

     } 
     return View(userProfiles); 

    } 



public async Task<IActionResult> Index(string sortOrder, string currentFilter, string searchString, int? page) 
    {  
     ViewData["CurrentSort"] = sortOrder; 

     ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; 
     // paging 
     if (searchString != null) 
     { 
      page = 1; 
     } 
     else 
     { 
      searchString = currentFilter; 
     } 
     // search 
     ViewData["CurrentFilter"] = searchString; 
     var users = from u in _context.UserProfiles 
        select u; 

     if (!String.IsNullOrEmpty(searchString)) 
     { 
      users = users.Where(u => u.user.Contains(searchString) 
          ); 

     } 
     //sort 
     switch (sortOrder) 
     { 
      case "name_desc": 
       users = users.OrderByDescending(u => u.user); 
       break; 

      default: 
       users = users.OrderBy(s => s.user); 
       break; 
     } 
     // *************** 
     // store the current path and query string in TempData["PreviousURL" session variable 
     TempData["PreviousURL"] = HttpContext.Request.Path.ToString() + HttpContext.Request.QueryString.ToString(); 

     return View(await PaginatedList<UserProfiles>.CreateAsync(users.AsNoTracking(), page ?? 1, pageSize)); 

    } 

這是我的第一個MVC項目。

回答

0

這取決於您的邏輯控制器在保存數據後需要的邏輯。

保存數據時,您需要將搜索,排序和分頁相關數據傳遞給控制器​​。您可以將它們作爲額外發布數據的一部分發送,作爲查詢字符串參數或作爲正在發佈的模型本身的一部分。

基於這些參數保存數據檢索數據並使用該分頁,篩選和排序數據來推廣您的視圖。

+0

我用一些控制器邏輯修改了我的初始文章。你有沒有關於如何發送和檢索排序,分頁和搜索數據的例子?謝謝。 – DeDeCode

相關問題