Page Redirect On Page_Load ЕСЛИ запись существует - PullRequest
1 голос
/ 13 ноября 2010

Хорошо, у меня есть страница default.aspx, на которой я пытаюсь перенаправить пользователя на другую страницу в зависимости от того, хранится ли его deviceId в базе данных SQL Server. Он должен направить пользователя к login.aspx, если запись для пользователя найдена, или к странице newdevice.aspx, если запись не найдена. Я хочу, чтобы это произошло на Page_Load, но до сих пор не смог понять это.

Ответы [ 3 ]

2 голосов
/ 13 ноября 2010

Это основная идея, как это сделать:)

Sub Page_Load()
{

//Acquire the User ID or email etc which can uniquely identify the user

SqlCommand cmd = new SqlCommand("SELECT COUNT(deviceId) from DeviceIDTable WHERE UserID=UserID",con);

if (cmd.ExecuteScalar().ToString() != "1") 
{
   Response.Redirect("newdevice.aspx");
}
else 
{
   Response.Redirect("login.aspx");
}

}
0 голосов
/ 13 ноября 2010

У вас есть два основных варианта решения этой ситуации. Вы можете использовать Response.Redirect или Server.Transfer.

Рекомендуется использовать Server.Transfer для внутренних перенаправлений и Response.Redirect для внешних перенаправлений, так как Server.Transfer приводит к снижению нагрузки на сервер и лучше подходит для рабочего процесса ASP.NET . Server.Transfer не может переносить на внешние страницы и, как таковой, бесполезен для переносов за пределы одного и того же приложения.

Вы можете использовать Server.Transfer с блоком кода, подобным приведенному ниже:

If User.IsValid = False Then
Server.Transfer("~/Login.aspx")
End If

Если вам нужно вместо этого использовать Response.Redirect, его можно будет использовать с блоком кода, подобным приведенному ниже:

If User.IsValid = False Then
Response.Redirect("~/Login.aspx",True)
End If

Параметр True указывает среде выполнения ASP.NET завершить обработку текущей страницы и немедленно отправить перенаправление.

0 голосов
/ 13 ноября 2010

Возможно, мне не хватает того, что именно вы ищете, но для перенаправления страницы вы можете вызвать Response.Redirect следующим образом:

  Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
    MyBase.OnLoad(e)

    //Processing to figure out if deciveId is stored in database

    If deviceIdFound Then
      Response.Redirect("newdevice.aspx")
    Else
      Response.Redirect("login.aspx")
    End If
  End Sub

Если вопрос фактически связан с FormsAuthentication или чем-то ещеЧто касается поиска в базе данных SQL и т. д., пожалуйста, уточните.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...