代码之家  ›  专栏  ›  技术社区  ›  balexandre

如何在MVC2中将变量从控制器初始化传递到母版页

  •  0
  • balexandre  · 技术社区  · 15 年前

    在控制器中:

    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 或者因为它总是空的。。。

    如何使用传递这两个变量 GoogleId CalendarUrl MasterPage ?

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

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

    我最好的选择是什么 为了达到这个目的?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    我不确定为什么您的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