2016-03-17 12 views
5

私のMVCプログラムをデバッグするときに問題が発生し、 "UserActivity"と呼ばれるdbにアクセスしたいと思います。 ブラウザでは、 "localhostページが機能していません。localhostページが機能していません。 localhostがあなたを何回もリダイレクトしました

localhostがあなたにリダイレクトした回数が多すぎます。"

ですが、特定のエラー位置は示されません。ここ

は/ UserActivity /インデックスコードをGET、私のUserActivtyControllerです:この問題について何かを知っている誰もがあれば

public class UserActivityController : BaseController 
{ 
    //GET /UserActivity/Index 
    public ActionResult Index(string returnUrl, int page = 1, string sort = "Id", string sortDir = "ASC", string filter = null) 
    { 
     String query = @" 
      SELECT Id 
      ,CreatedBy 
      ,CreatedOn 
      ,ModifiedBy 
      ,ModifiedOn 
      ,ContactId 
      ,EntityName 
      ,EntityId 
      ,ActivityType 
      ,ActivityStatus 
      ,DueDate 
      ,ActualEndDate 
      ,MasqueradeOn 
      ,MasqueradeBy 
     FROM UserActivity 
     -- ORDER BY CreatedOn DESC 
     -- OFFSET (@PageNumber -1) * 30 ROWS 
     -- FETCH NEXT 30 ROWS ONLY 
      "; 

     //string countQuery = @"" 

     List<UserActivityModels> userActivity = null; 

     using (IDbConnection db = new MySqlConnection(ConfigurationManager.ConnectionStrings["CRMPORTALSQLCONN"].ConnectionString)) 
     { 
      userActivity = (List<UserActivityModels>)db.Query<UserActivityModels>(query, new 
      { 
       @PageNumber = page, 

      }); 

      /*ViewData["TotalCount"] = (int)db.ExecuteScalar(countQuery, new 
      { 
       @PageNumber = page, 
       @Id = string.IsNullOrEmpty(filter) ? null : filter 
      }); 
      */ 

      ViewData["PageSize"] = 30; 
      ViewData["Filter"] = filter; 
     } 

     if (userActivity != null) 
     { 
      return RedirectToAction(returnUrl); 
     } 

     return View(userActivity); 
    } 
} 

は本当に感謝しています。ありがとう

+0

問題が発生したときの 'returnUrl'の値は何ですか? –

答えて

4
if (userActivity != null) 
{ 
    return RedirectToAction(returnUrl); 
} 

returnUrlが同じアクション( "UserActivity/Index")を指し示す場合、無限リダイレクトループが作成されます。リクエストを別のアクションにリダイレクトしたい場合は、正しい名前を渡してください。

+0

正確なリターンビューを「UserActivity/Index」に指示する必要がありますか? – Botski

+0

はい、次のような別のアクション名を明示的に使用できます:RedirectToAction( "controller"、 "action"、new {para、= value}); – Lesmian

0

私はredirectUrlの値が何であるか分かりませんが、それはnullであると思います。私はあなたのuserActivitynullではないと思います。だからreturn RedirectToAction(returnUrl);が呼び出されます。

RedirectToAction(null)に電話すると、実際は同じ操作にリダイレクトされ、すべてが再び繰り返されます。

userActivitynullの場合は、なぜreturn View(userActivity);にする必要があるのでしょうか。あなたは論理的な誤りがあると思います。

1

ループバック状況があります。これは、無限のwhileループに似ています。これを修正するには、コードリダイレクトの実装を変更してアクションメソッドにリダイレクトします。実装を以下のように変更したことに注目してください。これにより、「localhostがあなたを何度もリダイレクトしました」という問題が修正されます。あなたの状況に適したパラメータなどを渡すことをサポートするために改善することができます。追加のパラメータをサポートするRedirectToActionもご覧ください。パラメータをアクションメソッドに渡す場合は、このリンクが便利です。

public class UserActivityController : BaseController 
    { 
     //GET /UserActivity/Index 
     public ActionResult Index(int page = 1, string sort = "Id", string sortDir = "ASC", string filter = null) 
     { 
      // Your other implementation here. I have removed it for brevity. 

      if (userActivity != null) 
      { 
       return RedirectToAction("Index"); 
      } 

      return View(userActivity); 
     } 

     public ActionResult Index() 
     { 

      return View(); 
     } 
    } 
関連する問題