菜鸟学PetShop系列2

    今天接着研究Default.aspx的自定义控件,先看NavBarNoMenu.ascx,打开控件页,进入html页面,看到这样一段代码:<span id="aredLoggedIn" runat="server"><a href="SignOut.aspx" class="menuOrange">SIGN OUT</a>...</span><span id="aredLoggedOut" runat="server"><a hred="SignIn.aspx" class="menuOrange">SIGN IN</a></span>。这里的<span>标签有什么用处?我在网上找到这样一个解释:
    关于<span>标签:<span>在行内定义一个区域,也就是一行内可以被<span>划分成好几个区域,从而实现某种特定效果。<span>本身没有任何属性。
    我们知道,在Default.aspx页的右上角,默认是没有登录的,这时右上角显示的分别是"SIGN IN",购物车图标,"HELP"以及"SEARCH"。而在点击"SIGN IN"登录后,右上角显示的链接会变为"SIGN OUT","MY ACCOUNT",购物车图标,"HELP"以及"SEARCH"。这个功能的就来自于<span>标签。先用<span>标签把同一行内的"SIGN OUT","MY ACCOUNT","SIGN IN"这三个链接分开,然后在身份验证通过后就显示前两个,而在没有登录的情况下就只显示"SIGN IN"。
    那么,这里面又是怎样判断身份验证通过前后分别显示哪个链接呢?我们打开隐藏代码NavBarNoMenu.ascx.cs,可以看到这样一个函数:ShowLoggedInArea()。这个函数的内容是这样的:
  private void ShowLoggedInArea() {

   if (Request.IsAuthenticated != true) {

    areaLoggedIn.Visible = false;
    areaLoggedOut.Visible = true;

   } else {

    areaLoggedIn.Visible = true;
    areaLoggedOut.Visible = false;

   }
  }
    在ShowLoggedInArea()函数里,首先是对Request.IsAuthenticated进行判断,这里的Request.IsAuthenticated的用处,MSDN是这样描述的:获取一个值,该值指示是否验证了用户。如果验证了用户,则为true,否则为false。而areaLoggedIn与areaLoggedOut分别是之前html代码内两个<span>标签的id,即ShowLoggedInArea()函数的大意为:当Request.IsAuthenticated属性不为真(没有通过身份验证),就显示<span id=areaLoggedOut>标签的内容,即在页面右上角显示SIGN  IN,反之当Request.IsAuthenticated属性为真(通过身份验证),则显示<span id=areaLoggedIn>标签的内容,即在页面右上角显示SIGN OUT,MY ACCOUNT。

    接着研究NavBar.ascx与SignOutNavBar.ascx,这两个控件与NavBarNoMenu.ascx都相差不大,只是添加了一些宠物商品的链接。页面上相对应的显示就是左上角那一行导航条:Fish,Dogs,Reptiles,Cats,Birds。这三个控件的作用,可以说是一样的。只是在Default.aspx页中,左边已经有导航栏,于是无需再在左上角加入导航条,而其它页面都没有Default.aspx中的导航栏,便需要使用NavBar.ascx与SignOutNavBar.ascx控件来加入导航条。其中NavBar.ascx控件用来加入登录状态的导航条,而SignOutNavBar.ascx控件用来加入未登录状态的导航条。
   
    最后,还有一个Banner控件,这个控件的html代码只有寥寥数行,但cs代码一大堆,看得我头都晕了,决定另起一篇着重分析。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值