Member 10379103 Ответов: 1

Как отобразить назначенные роли, существующие на странице "код позади"


Я должен добавить три новые роли на веб-сайт школьной системы, чтобы пользователи в этих трех ролях видели правильную главную страницу. Ниже приведен код. Я назначил последние три роли (кафетерий, инженер-строитель и охранник):

public partial class WebForm1 : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                var username = User.Identity.Name;               
               
                SqlConnection MyConnection = new SqlConnection("server=myserver\\sql2008;database=Schools;Trusted_Connection=True;");

                SqlDataAdapter MyDataAdapter = new SqlDataAdapter("GetUserInfo", MyConnection);

                MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;

                MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@userinfo", SqlDbType.VarChar, 40));

                MyDataAdapter.SelectCommand.Parameters["@userinfo"].Value = (userinfo);

                MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@userrole", SqlDbType.VarChar, 40));

                MyDataAdapter.SelectCommand.Parameters["@userrole"].Direction = ParameterDirection.Output;

                DataSet DS = new DataSet();

                MyConnection.Open();

                MyDataAdapter.Fill(DS, "UsersRole");

                Session.Add("Role", DS);

                string userrole = null;

                userrole = MyDataAdapter.SelectCommand.Parameters[1].Value.ToString();

                string role1 = "Principal";
                string role2 = "AsstPrincipal";
                string role3 = "SupportStaff";
                string role4 = "FirstGrade";
                string role5 = "SecondGrade";
                string role6 = "ThirdGrade";
                string role7 = "Cafeteria";
                string role8 = "BuildingEngineers";
                string role9 = "SecurityGuard";
                            

              
                if (userrole == role1)
                {
                    Server.Transfer("PrincipalMP.aspx", true);
                }
                else if (userrole == role2)
                {
                    Server.Transfer("AsstPrincipalMP.aspx", true);
                }
                else if (userrole == role3)
                {
                    Server.Transfer("SupportStaffMP.aspx", true);
                }
                else if (userrole == role4)
                {
                    Server.Transfer("FirstGradeMP.aspx", true);
                }
                else if (userrole == role5)
                {
                    Server.Transfer("SecondGrade.aspx", true);
                }
                else if (userrole == role6)
                {
                    Server.Transfer("ThirdGradeMP.aspx", true);
                }
                else if (userrole == role7)
                {
                    Server.Transfer("CafeteriaMP.aspx", true);
                }
                else if (userrole == role8)
                {
                    Server.Transfer("BuildingEngineersMP.aspx", true);
                }
                else if (userrole == role9)
                {
                    Server.Transfer("SecurityGuardMP.aspx", true);
                }
                
                else
                {
                    Server.Transfer("UnknownUser.aspx", true);
                }


                MyConnection.Close();
            }
        }


    }
The problem I have is when I log in as a member of Cafeteria, BuildEngineer, or Security Guard, I am not taken to their assigned page - I am taken to the Unknown User main page.

I want to be sure the correct user role is actually being passed.  How would I display that on the Unknown User Page?

}


Что я уже пробовал:

Поиск в Google, технические доски

ZurdoDev

Как уже упоминалось в решении 1, это очень простая вещь для вас. Поставьте точку останова, а затем протестируйте ее. Вы узнаете, что является причиной этого быстрее,чем сможете опубликовать этот вопрос.

1 Ответов

Рейтинг:
2

Mathew Soji

Пожалуйста, используйте отладчик в visual studio . Это единственный способ узнать точную причину, по которой ваш код работает не так, как ожидалось .

Посмотрите, какое значение присвоено переменной' userrole ' в приведенном ниже операторе.

userrole = MyDataAdapter.SelectCommand.Parameters[1].Value.ToString();





Посмотрите на приведенную ниже ссылку для отладки .

Навигация по коду с помощью отладчика[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]