Как передать переменную из инициализации контроллера в мастер-страницу в MVC2 - PullRequest
0 голосов
/ 18 ноября 2010

в контроллере:

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, так как она всегда равна нулю ...

Как я могу использовать, чтобы передать эти 2 переменные GoogleId и CalendarUrl в MasterPage?

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

альтернативный текст http://www.balexandre.com/temp/2010-11-17_2328.png

Какой мой лучший вариант , чтобы выполнить это?

1 Ответ

1 голос
/ 18 ноября 2010

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

protected override void OnActionExecuting(ActionExecutingContext filterContext)

Также взгляните на следующее:

  1. ASP.NET MVC - Установить ViewData для главной страницы в базовом контроллере
  2. http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-cs
...