2017-01-09 8 views
0

私はasp、net coreを使用しており、チュートリアルを使用してソート、ページング、検索ページ(インデックス)を作成しています。このページからアイテムを編集すると、コントローラは常にデフォルトのインデックスページに戻るようにダンプします。前のURLに戻るにはどうすればいいですか?どうもありがとう。 ここに私のコントローラファイルのセクションがあります。ASP.NETコアで編集後に前の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

関連する問題