2013-12-15 61 views
0

我需要將請求重定向到另一個控制器。所以基本上我有www.MyDomain.com/SomeParameter。我需要從URL讀取此參數值,然後重定向到另一個控制器以進行進一步處理。爲此,我的項目Home和Employee中有兩個控制器,如下所示。重定向到不同的控制器方法

public class HomeController : Controller 
    { 
     public ActionResult Index(string ID) 
     { 
      if (!string.IsNullOrEmpty(ID)) 
      { 
       string EmployeeAccountNumber = GetEmployeeNumberFromID(ID); 
       RedirectToAction("Employee", "Index", EmployeeAccountNumber); 
      } 

      return View(); 
     } 

     private string GetEmployeeNumberFromID(string ID) 
     { 
      return "Alpha"; 
     } 
    } 

public class EmployeeController : Controller 
    { 
     // 
     // GET: /Employee/ 

     public ActionResult Index(string id) 
     { 
      return View(); 
     } 

    } 

我加入,我想重定向到我EmployeeController路由被定義爲在Global.asax中

public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       "Default", // Route name 
       "{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
       ); 

      routes.MapRoute(
       "EmployeeManagement", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Employee", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
       ); 
     } 

正如你在HomeController類的Index方法如下看,但是,斷點我在EmployeeController.Index中設置永遠不會被擊中。我在這裏做錯了什麼?

回答

1
public class HomeController : Controller 
     { 
     public ActionResult Index(int id) 
     { 
// Redirect/Index/id is because of route defined as {controller}/{action}/{id} 
//if u need the url to be say "www.MyDomain.com/3240" then change route definition as 
//"{id}" instead of "{controller}/{action}/{id}". Tested and working 
      return RedirectToAction("Index", "Redirect/Index/" + id); 
     } 
} 

public class RedirectController : Controller 
    { 
     // 
     // GET: /Redirect/ 

     public ActionResult Index(int id) 
     { 
      return View(); 
     } 

    } 

routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
      ); 

      routes.MapRoute(
       "redirectedroute", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "RedirectController", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
      ); 
+0

我不確定這段代碼是否解決了我遇到的特定場景。我在我的問題中添加了更多細節以進一步闡明 –

0

相反RedirectToAction()的嘗試重定向( 「/僱員」),讓控制器手柄休息

+0

沒有任何區別。 –

+0

public ActionResult Index() { return RedirectToAction(「Index」,「Redirect」); } - 測試過的代碼片段。 「重定向」是我的路由選擇部分。 – harshal

+0

所以重定向是你的控制器在這裏?你可以在你的回覆中添加你的代碼,因爲評論不是代碼友好的(正如你在上面添加的內容中看到的那樣) –

1

使用

return RedirectToAction("Employee", "Index", new {"id"=EmployeeAccountNumber}); 

代替

RedirectToAction("Employee", "Index", EmployeeAccountNumber); 

你是不是通過路由參數

相關問題