2014-06-16 71 views
0

我要與值某些鍵存儲在RouteData.Values,並通過控制器和視圖之間的數據,店永久RouteData.Values數據

RouteData.Values.Add("MyKey", "MyValue"); 

我會在使用價值_layout到在所有視圖中顯示值, 但是當你轉到其他控制器時,似乎所有的鍵都將被刪除。

是否有永久存儲一些密鑰RouteData.Value,並防止將其刪除?

如果不是,我可以在哪裏存儲這樣的數據並從View中訪問它?

我不想使用ViewBag的ViewData,因爲我不從IRouteConstraint

+1

你可以使用.NET會話,如果你喜歡 –

+1

可以使用baseController類爲這些作業。所有的控制器都使用這個baseController,並且你可以在其中定義所有的通用對象。 –

回答

1

訪問它們,您可以使用baseController類爲這些作業。所有的控制器都使用這個baseController,你可以在其中定義所有的通用對象。

像這樣:

public class BaseController : Controller 
{ 
    protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     RouteData.Values.Add("MyKey", "MyValue"); 

     base.OnActionExecuting(filterContext); 
    } 
} 

及其他控制器

public class HomeController : BaseController 
{ 
    // get route data values 
} 
+0

偉大的解決方案;你能說比這個方法有什麼好處嗎?謝謝 –

+0

您可以初始化其中的其他常用數據。這個邏輯和控制器的主頁一樣。此外,您可以管理您的用戶數據,本地化數據,例外情況,視圖等信息...我的意思是更易於管理的控制器... –

+0

檢查[此](http://code.msdn.microsoft.com/NET- best-practice-samples-4e9b92a4#content)和[THIS](https://nopcommerce.codeplex.com/SourceControl/latest#src/Presentation/Nop.Web.Framework/Controllers/BaseController.cs) –