2010-11-17 2 views
0

в контроллере:Как передать переменную из контроллера инициализации мастер-страницы в MVC2

protected override void Initialize(RequestContext requestContext) 
{ 
    if (db == null) { db = new myRepository(); } 
    if (currentCalendar == null) 
    { 
     currentCalendar = 
      db.FindCalendarInfoByUrl(
        requestContext.RouteData.Values["calurl"].ToString()); 

     // if not found ... show Unavailable Content View 
     if (currentCalendar == null) 
      RedirectToAction("ContentNotAvailable"); 

     // to show in the MasterPage 
     Session["GoogleId"] = currentCalendar.GoogleAnalyticsId; 
    } 

    base.Initialize(requestContext); 
} 

Session переменная еще не определена в это время запроса, и я не могу использовать ViewData либо как Это всегда значение null ...

Как использовать эти переменные GoogleId и CalendarUrl на MasterPage?

Я думаю, что я мог бы использовать Cache, но есть так много, и я не в Caching:

alt text http://www.balexandre.com/temp/2010-11-17_2328.png

Что мой лучший вариант для достижения этой цели?

+0

ViewData не должно быть пустым в 'Initialize'. Повторите попытку и покажите появившуюся ошибку. – Omar

+0

'ViewData' является' null' в 'MasterPage',' Session' недопустим в методе Ìnitialization'. :( – balexandre

+0

dang ... 'ViewData' есть .. Я просто пропустил правильный контроллер (нужно спать, срочно!). – balexandre

ответ

1

Я не уверен, почему ваш ViewData является нулевым на главной странице, но попробуйте переопределить событие OnActionExecuting.

protected override void OnActionExecuting(ActionExecutingContext filterContext) 

Также обратите внимание на следующее:

  1. ASP.NET MVC - Set ViewData for masterpage in base controller
  2. http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-cs
+0

это не :(извините. – balexandre

Смежные вопросы