Member 10379103 Ответов: 0

Как изменить страницу для отображения результатов запроса вместо переноса пользователя на другую страницу


Мне нужно изменить некоторый код, лежащий в основе логики, которая отправляет пользователей на разные страницы в зависимости от их разрешений на веб-сайт.

Я хочу поместить ссылки на веб - сайт и разрешения на веб-сайт в таблицу, запросить таблицу и-на основе разрешений пользователей-отобразить выходные данные, связанные с этим разрешением, на одной странице вместо использования текущего сервера.Передача ("xxxx.aspx", true) логики, которая уже есть на странице.

Как бы я это сделал?

Вот что я унаследовал:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.WebControls;
using System.Security.Principal;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Configuration;

namespace SchoolDistrictOne
{
    public partial class MainOffice : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                var username = User.Identity.Name;
                 

                SqlConnection MyConnection = new SqlConnection("server=myservername\\sql2008;database=schools;Trusted_Connection=True;");

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

                MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;

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

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

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

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

                DataSet DS = new DataSet();

                MyConnection.Open();

                MyDataAdapter.Fill(DS, "UsersPermissions");

                Session.Add("Permissions", DS);

                string userpermission = null;

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

                string permission1 = "Principals";
                string permission2 = "FirstGrade";
                string permission3 = "SecondGrade";
                string permission4 = "SupportStaff";
                string permission5 = "Cafeteria";
                string permission6 = "BldgStaff";
               

               


                if (userpermission == permission1)
                {
                    //Server.Transfer("Principals.aspx", true);
                }
                else if (userpermission == permission2)
                {
                    Server.Transfer("FirstGrade.aspx", true);
                }
                else if (userpermission == permission3)
                {
                    Server.Transfer("SecondGrade.aspx", true);
                }
                else if (userpermission == permission4)
                {
                    Server.Transfer("SupportStaff.aspx", true);
                }
                else if (userpermission == permission5)
                {
                    Server.Transfer("Cafeteria.aspx", true);
                }
                else if (userpermission == permission6)
                {
                    Server.Transfer("BldgStaff.aspx", true);
                }
                else
                {
                    Server.Transfer("NoPermissions.aspx", true);
                }


                MyConnection.Close();
            }
        }


    }


}


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

Обычно я выполняю хранимую процедуру, отображаю результаты на основе "if permissions = "Principals", а затем
output>result1result1 hreflink 
и т.д...

Если разрешение FirstGrade, отобразите соответствующие разрешения на этой же странице.

Могу ли я это сделать или мне нужно продолжать поддерживать 7 разных главных страниц?

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

Поиск в Google, поиск в блогах codeproject, архивах и вопросах, dotnetperls

j snooze

Я не знаю, понимаю ли я все, о чем вы просите, но мои соболезнования вам за все это жесткое кодирование, которое я вижу. Это вообще не масштабируется, поскольку добавляются дополнительные разрешения, это было бы беспорядком. Я предполагаю, что вы создаете таблицу разрешений, которая имеет тип разрешения и связанную веб-страницу в качестве полей, и будет вызывать сохраненную процедуру, чтобы получить пользователя, разрешения и связанную веб-страницу, чтобы перейти к ней из базы данных? Если это так, я думаю, вы можете использовать панель и делать элементы управления. Добавить в панель. Я немного устарел со своими веб-формами (mvc станет намного лучше, если вы освоите его). Вы должны иметь возможность прокручивать свой datareader / таблицу / набор данных и создавать новый элемент управления Link, а затем добавлять его на эту панель с помощью controls.add (NewLinkControl) ... имеет ли это смысл?

Member 10379103

Да-вы правы в описании того, что делает логика в данный момент, и да - то, что вы предложили, имеет смысл.

Спасибо за помощь!

Karthik_Mahalingam

имеет ли 7 страниц одинаковое содержание?

ArunRajendra

Вы можете иметь разные разделы и показывать / скрывать их на основе разных разрешений. Другой вариант-создать пользовательский элемент управления. На основе разрешения создайте экземпляр соответствующего элемента управления. Таким образом, код чист и разделен. http://stackoverflow.com/questions/12761000/is-there-a-way-to-render-partial-views-in-webforms

0 Ответов