2012-03-26 9 views
1

私はMVC3で初心者です。私は別のコントローラのメソッドから値を取得したいと思います。ここでは、2つの方法:だからコントローラメソッドから別のメソッドに値を渡すには?

[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

あなたはテニスクラブを追加するときにマネージャーを割り当てないのはなぜですか? –

+0

テニスクラブに割り当てる前にそれを作成する必要があるため、この詳細を忘れて申し訳ありません... – Razor

+0

Francesco、ちょうど参照によって割り当て、データコンテキストがあなたのために車を取るでしょう。 – KingCronus

答えて

3

[HttpPost]属性で装飾されたアクションをリダイレクトできません。これはリダイレクトの仕組みではありません。リダイレクトとは、新しいLocationヘッダーを使用して301 HTTPステータスコードをクライアントに送信し、クライアントがこの新しい場所にGET要求を発行することを意味します。

あなたはAssignManagerアクションから[HttpPost]属性を削除したら、だからあなたは、パラメータとしてIDを渡すことができます。

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

、その後:あなたは[HttpPost]を削除する必要があります。また

[HttpPost] 
public ActionResult AssignManager(int id) 
{ 

} 
+0

ありがとう、ついにそれは動作します! – Razor

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

をあなたの行動の属性

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

ご回答ありがとうございます+ 1 – Razor

1

は基本的に、あなたはそれを伝えるのパラメータを持っていることになる、あまりにも、GET AssignManagerメソッドを持っている必要があります管理者が割り当てられている必要がありTennisClubれた:

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

をそしてCreateからAssignManagerにリダイレクトする際に、ユーザーが指定することができますid:TennisClub

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

ご回答ありがとうございます+ 1 – Razor

関連する問題