菜单列表未选择角色实现

时间:2013-05-04 13:26:23

标签: asp.net vb.net menuitem roles

我正在实施用户角色。我有用HTML绘制的菜单列表,我正在从我的代码背后控制它们的可见性。我有3个数据库表,User w/ User_Number, User_Role_IDRoles w/ Role_ID, Role_NameUser_Roles w/ User_Role_ID, User_Number, Role_IDRole_ID是链接到角色名称的整数。每个用户被分配到其中六个整数中的一个,并且他们的角色基于此。除了我的Administrator角色int 3之外,所有工作都按预期工作。它允许我显示或隐藏基于此角色的任何表,lstAdminMenu除外。我测试了所有其他角色和菜单,除了lstAdminMenu中的Administrator role之外,我可以显示任何角色的任何菜单。菜单控件是:

 <li runat="server" id="lstAdminMenu"><a class="menuitem">Administration</a>
                        <ul class="submenu">
                            <li><a href="../Administrative/CreateStudent.aspx">Create Student</a></li>
                            <li><a href="../Administrative/EnrollStudent.aspx">Manual Enrollments</a></li>
                            <li><a href="../Administrative/EnrollStudent.aspx">Edit Student</a></li>
                            <li><a href="../Administrative/CreateStaff.aspx">Create Staff Member</a></li>
                            <li><a href="../Administrative/CreateAVOS.aspx">Create Advisor</a></li>
                            <li><a  href="../Administrative/AddResults.aspx">Input Grades</a></li>
                            <li><a href="../Administrative/FeesPaid.aspx">Fees</a></li>
                            <li><a href="../Administrative/NewModulesAndProg.aspx">Create Module</a></li>
                            <li><a href="../Administrative/AdminEditDegreesModules.aspx">Edit Modules</a></li>
                            <li><a href="../Administrative/EditStudentStatus.aspx">Student Status</a></li>
                            <li><a href="../Administrative/MarkModulesAsRunningSuspended.aspx"/>Module Status</li>
                            <li><a href="../Administrative/AddModuleEvents.aspx">Module Events</a></li>
                            <li><a href="../Administrative/PasswordGeneration.aspx">Password Reset</a></li>
                            <li><a href="../Administrative/Import.aspx">Import</a></li>
                            <li><a href="../Administrative/AddBuildingOrRoom.aspx">Create Estate</a></li>
                        </ul>
                       </li>

代码背后:

  '' Initialise Admin profile
    Dim Administrator As Boolean
    Administrator = False

     For Each Role As Role In userPermissions
        If Role.Role_ID = 3 Then
            Administrator = True
            Exit For
        End If
    Next

    If Administrator Then
        lstAdminMenu.Visible = True
        lstAcademics.Visible = False
        lstSeniorUM.Visible = False
        lstAcademicPM.Visible = False
    Else
        lstAdminMenu.Visible = False
    End If

此外,当我调试它时,它表示角色是Aministrator,lstAdminMenu的可见性为真。我根本无法理解这一点。

1 个答案:

答案 0 :(得分:0)

对于页面上的可见性来说,太多的参数似乎导致了与角色的冲突。我已经将所有菜单更改为默认隐藏,并且每个项目仅显示正确的用户是否已登录。现在,每个角色的代码更像是这样:

  If Administrator Then
    lstAdminMenu.Visible = True
  End If