首页 新闻 搜索 专区 学院

请教大家个问题?

0
悬赏园豆:5 [已解决问题] 解决于 2010-08-31 12:45

我现在想实现一个功能:不同的用户登录以后显示的导航链接不一样,比如A用户登录看到的页面导航和B看的就不一样!我的页面导航是写在master页中的,用户登录模块是写在一个ascx页中的,我本来是想在用户登录后也就是在master页中根据用户登录的身份来动态显示要加载的导航菜单,这样的思路我试过了,出不来!问问大家应该怎么弄了?

master中ASPX页代码(不同用户的大部分导航是一样的,所以我就写死了,就有部分导航是有些用户专有的,比如下面的第三个超链接就是某个用户登录后才显示的)

<div id="nav">
            <div class="nav_item"><a href="/Default.aspx">首页</a></div>
            <div class="nav_item"><a href="/plat/platDesc.aspx">使用说明</a></div>
            <div class="nav_item" id="post" runat="server" visible="false"><a href="#">送检</a></div>
            <div class="nav_item"><a href="/news/newslist.aspx">业界动态</a></div>
            <div class="nav_item"><a href="/slice/sliceList.aspx">切片库</a></div>
            <div class="nav_item"><a href="/expert/expertDesc.aspx">专家介绍</a></div>
            <div class="nav_item"><a href="/contact/contact.aspx">联系我们</a></div>
        </div>

master后台代码:

if (Session["UserInfo"] != null)
        {
            User user = (User)Session["UserInfo"];
            switch (user.Type)
            {
                case 2:
                    post.Visible = true;
                    break;
                default:
                    break;
            }
        }

在用户登录控件中,也就是ascx中,登录成功后我给session["UserInfo"]赋值

yixin841210的主页 yixin841210 | 小虾三级 | 园豆:1138
提问于:2010-08-30 13:52
< >
分享
最佳答案
0

你的思路没错,是应该在master上对用户身份来进行加载。不过最好贴出代码来看下。

kyo-yo | 大侠五级 |园豆:5587 | 2010-08-30 14:09
恩,帮忙看看吧
yixin841210 | 园豆:1138 (小虾三级) | 2010-08-30 14:30
@yixin841210:可能知道是什么问题了,因为你在点击登录按钮的时候首先激发的是MasterPage的PageLoad事件,这时你的登录按钮事件还没调用到,所以Session应该是空的,等按顺序调用到你的登录按钮事件的时候,SESSION是有了,但是页面已经执行完毕了,所以建议你在登录完成后重新刷新一下页面或者跳转到首页等其他页面看看,这样再重新载入MasterPage的PageLoad事件时你的SESSION也有了,就能执行成功了
kyo-yo | 园豆:5587 (大侠五级) | 2010-08-30 15:50
@顾磊(kyo-yo): 恩,你说的没错,登录成功后第一次显示的时候是显示不出来的,刷新一下就可以了,可是怎么让它在登录完后就直接显示,而不用重新刷,直接登录成功后用response跳转吗?这样页面又往返了一次,没有更好的办法了吗?你一般做这样的动态显示都怎么做了,我总感觉我的方法不太好
yixin841210 | 园豆:1138 (小虾三级) | 2010-08-30 16:19
@yixin841210:如果你想更友好点,就是使用AJAX登录,登录完毕后通过JS将菜单栏读取出来。这样就不会出现重复刷新的问题了。不过比较麻烦。
kyo-yo | 园豆:5587 (大侠五级) | 2010-08-31 09:20
@顾磊(kyo-yo):恩,非常感谢!
yixin841210 | 园豆:1138 (小虾三级) | 2010-08-31 12:44
其他回答(2)
0

导航栏,是否考虑也做成一个控件,在用户登录的时候根据ID动态加载要显示的菜单.

changbluesky | 园豆:854 (小虾三级) | 2010-08-30 14:12
0

把用户所具备的操作权限存入数据库中,用户登陆成功的时候,根据自己的权限生成导航菜单。

收获园豆:5
Astar | 园豆:40805 (高人七级) | 2010-08-30 15:58
恩,你的意思是把导航的链接,还有显示文本什么的都放到数据库里,读的时候动态的生成导航的HTML吗?如果是这样做的话,动态生成的HTML需要大量的字符串拼接,很麻烦啊,是这么做吗?
支持(0) 反对(0) yixin841210 | 园豆:1138 (小虾三级) | 2010-08-30 16:23
@yixin841210:是的,现在的系统大多是这样做的,因为你导航排版基本是有序的,只需要循环生成。
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-08-30 16:27
@Astar: 恩,明白了谢谢你!~
支持(0) 反对(0) yixin841210 | 园豆:1138 (小虾三级) | 2010-08-30 16:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册