2012-03-26 124 views
1

我是MVC3的初學者,我想從另一個控制器的方法中獲得一個值。下面兩種方法:如何將控制器方法的值傳遞給另一個?

[HttpPost] 
    public ActionResult Create(TennisClub tennisclub) 
    { 
     if (ModelState.IsValid) 
     { 
      db.TennisClubs.Add(tennisclub); 
      db.SaveChanges(); 
      return RedirectToAction("AssignManager"); 
     } 

     return View(tennisclub); 
    } 

    [HttpPost] 
    public ActionResult AssignManager(Manager manager) 
    { 

    } 

所以,當我創建一個新的網球俱樂部,我立刻想將管理員分配給它...對於我需要的主鍵「ID」。

所以我的問題是:如何在我的「AssignManager」方法中獲得此ID?在此先感謝

+0

爲什麼當你添加網球俱樂部時你沒有指派經理? – 2012-03-26 07:43:09

+0

因爲我需要在將它分配給網球俱樂部之前創建它,對不起,我忘記了這個細節... – Razor 2012-03-26 07:44:34

+0

弗朗切斯科,只是通過引用分配,數據上下文將採取這個車給你。 – KingCronus 2012-03-26 07:49:55

回答

3

您不能重定向到裝飾有[HttpPost]屬性的操作。這不是重定向的工作方式。重定向意味着您使用新的位置標頭向客戶端發送301 HTTP狀態代碼,並且客戶端向此新位置發出GET請求。

所以一旦你從你的AssignManager行動刪除[HttpPost]屬性,你可以通過ID作爲參數:

return RedirectToAction("AssignManager", new { id = "123" }); 

然後:

[HttpPost] 
public ActionResult AssignManager(int id) 
{ 

} 
+0

謝謝,最後它的作品! – Razor 2012-03-26 08:44:16

1
return RedirectToAction("AssignManager", new { id = tennisclub.Id }); 

你也需要刪除[HttpPost]屬性來自你的動作

public ActionResult AssignManager(int id) { 
    //... 
} 
+0

感謝您的回覆+ 1 – Razor 2012-03-26 08:44:34

1

基本上,你需要有一個GET AssignManager方法也是如此,這將有一個參數告訴它這TennisClub管理者應分配:

[HttpGet] 
public ActionResult AssignManager(int tennisClubId) 
{ 
    // here, you will want to return AssignManager view 
} 

而且從Create重定向到AssignManager的時候,你可以指定TennisClub的編號:

return RedirectToAction("AssignManager", new { tennisClubId = tennisclub.Id }); 
+0

感謝您的回覆+ 1 – Razor 2012-03-26 08:45:12

相關問題