如何将变量从Controller Initialization传递到MVC2中的Master页面

时间:2010-11-17 22:30:42

标签: asp.net-mvc asp.net-mvc-2 master-pages

在控制器中:

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个变量GoogleIdCalendarUrl传递给MasterPage

我在想我可以使用Cache,但有很多,我还没有进入缓存:

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

完成此操作的最佳选择是什么?

1 个答案:

答案 0 :(得分: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