Как изменить страницу для отображения результатов запроса вместо переноса пользователя на другую страницу
Мне нужно изменить некоторый код, лежащий в основе логики, которая отправляет пользователей на разные страницы в зависимости от их разрешений на веб-сайт.
Я хочу поместить ссылки на веб - сайт и разрешения на веб-сайт в таблицу, запросить таблицу и-на основе разрешений пользователей-отобразить выходные данные, связанные с этим разрешением, на одной странице вместо использования текущего сервера.Передача ("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