内容页中操作MasterPage里的用户控件

      前段时间无意中下了个用css制作TabMenu 的小工具 CSS Tab Designer 2,里面有几个Demo挺好看的。正好最近做网站有这方面的需要,所以就稍作改动拿了进来.....
      呵呵,上面就是一个引子,接下来进入正题。在现在的这个网站里,我用到了母版页。在这母版页的好处我就不赘述了,反正是省事多了。根据设计的要求,网站的导航要放在页面的左侧,【导航效果就是我弄的那个TabMenu】。我的做法是直接做成个用户控件放在母版页里,因为根据以往的规律,设计肯定还会要求当前页对应的Menu要高亮显示;做成用户控件,可以给控件添加一个属性,在调用的时候为属性赋值,用户控件可以根据这个属性来处理哪个Menu高亮显示。
      想法是不错,实际做起来,就出问题了。用于以前开发中用的都是用户控件,像现在这种情况,直接在使用页面里托个TabMenu的用户控件,然后给属性赋个值,就OK了。但现在用到了母版页,问题就不一样了。可不可以,在内容也中操作母版页中的这个用户控件,动态给他的属性赋值呢?答案当然是可以。只要在内容页中加上<%@ MasterType VirtualPath="~/Index.master" %>,咱就可以访问MasterPage里的控件了。就这样,一路调试、修改下去,哈哈,终于实现了。
      哎呀,表达能力太差,还是给大家看代码吧:
a.用户控件:

2.用户控件

 1 protected   void  Page_Load( object  sender, EventArgs e)
 2      {
 3        if (!this.IsPostBack)
 4        {
 5//动态访问 导航用户控件
 6        ASP.usercontrol_tabmenu_ascx tabMenu = (ASP.usercontrol_tabmenu_ascx)Master.FindControl("TabMenu1");
 7        if (tabMenu != null)
 8        {
 9            tabMenu.AnchorID = "Service";
10        }

11    }

12    }

还需要注意的是:1.css的大小写[因为这个,效果显示不出来,害我调试了半天]
                                   2.css 效果防止覆盖,因为我在站点里用到了App_Theme,本来以为将TabMenu 用到的css根代码放一块,就不会被App_Theme里的css覆盖,但结果是被覆盖了。

你可能感兴趣的:(master)