2017-04-06 23 views
0

ありがとうございました!RedirectToActionは機能しません。実行されますが、URLにルーティングされません。

私は質問があります。 RedirectToActionが動作しません

、それはそれは、それが実行されるとき、それは、CHECKACCESS()メソッドにアクセスする編集コントローラ最初

public ActionResult Edit(int? id) 
    { 
     CheckAccess(); 

     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 

     ..... 
    } 

を実行し、URL

にないルートを行う実行します リターンRedirectToAction( "エラー"、 "インデックス"); (ID == nullの)場合には、」URLにOKではなく、ルートを実行し、その後、戻って「編集」コントローラに、次のコマンドを実行します。

public ActionResult CheckAccess() 
    { 
     int StaffUserType = 5; 
     if (Session["StaffUserType"] != null) 
      StaffUserType = Convert.ToInt32(Session["StaffUserType"]); 

     if (StaffUserType == 5) 
     { 

      //return Json(Url.Action("Index", "Error")); 
      return RedirectToAction("Error", "Index"); 
      //return View("ErrorController/Index"); 

     } 
     else 
      return View(); 
     } 
    } 
+2

'return RedirectToAction(" Index "、" Error "、new {id = StaffUserType});は適切な使い方です。アクション名は、最初の引数として、次にコントローラ名として記述する必要があります。 –

+1

そして、あなたの 'if(id == null)'のポイントは何ですか?あなたはすでに終了しており、そのコード行に到達することはありません。 –

答えて

1

編集()RedirectToAction結果を返すことはありません、CHECKACCESS()からの戻り値がキャプチャされ、返却されていないため。

あなたは

public bool CheckAccess() 
{ 
    int StaffUserType = 5; 
    if (Session["StaffUserType"] != null) 
     StaffUserType = Convert.ToInt32(Session["StaffUserType"]); 

    if (StaffUserType == 5) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

はその後、編集中に、この結果をチェックし、あればRedirectToActionを返すブール値を返すようにCHECKACCESSを()修正することができる

結果は偽でした。

public ActionResult Edit(int? id) 
{ 
    if (!CheckAccess()) 
    { 
     return RedirectToAction("Index", "Error"); 
    } 

    ..... 
} 
+0

ありがとうございました!!!! –

関連する問題