2012-05-07 20 views
0

コントローラに2つのアクション結果があります。概要と概要。MVC3コントローラのアクション結果「覚えている」合格ID

public ActionResult Overview(int id) 
{ 
    return View(new OverviewModel() { Project = db.People.Find(id) }); 
} 

public ActionResult About(int id) 
{ 
    return View(new AboutModel() { Project = db.People.Find(id) }); 
} 

概要に渡されたIDを覚えておき、デフォルトとして[バージョン情報]で使用します。ユーザーがタブをOverviewからAboutに切り替える間、このIdを一定に保つ方法はわかりません。

+0

なぜセッションワークに入れないのですか? – mccow002

+0

セッションに入れたらどういう意味ですか? –

+1

TempDataの代わりにSessionを除いて、Brandonの答えに似ています – mccow002

答えて

5

idをTempDataに格納してみることができます。おそらくこのようなもの(テストされていない)

public ActionResult Overview(int id) 
{ 
    TempData["YourId"] = id; 
    return View(new OverviewModel() { Project = db.People.Find(id) }); 
} 

public ActionResult About(int? id) 
{ 
    id = id ?? int.Parse(TempData["YourId"].ToString()); 
    return View(new AboutModel() { Project = db.People.Find(id) }); 
} 
+0

TempDataの詳細を教えてください。ありがとう、これは動作します。 –

+0

@dnxviral、TempDataはViewDataと似ていますが、2つの連続した要求が持続するという点を除けば、2つの異なるコントローラアクション間でデータを渡すようなものに役立ちます。 – Brandon

+2

MVCのTempDataは、実際に取得されるまで保持されます。 FYI Tempdataは実際にはユーザーSessionStateに格納されるため、ViewDataよりSessionDataに似ています。 http://msdn.microsoft.com/en-us/library/dd394711.aspx –

0

このデータが機密でない場合は、非表示のhtml属性を使用することもできます。それは私たちにとって不思議に思っていました。

関連する問題