页面重定向在Page_Load IF记录存在

时间:2010-11-13 01:16:24

标签: asp.net sql-server vb.net pageload

好的,我有一个default.aspx页面,我试图将用户重定向到另一个页面,具体取决于他们的deviceId是否存储在SQL Server数据库中。如果找到用户的记录,它应该将用户引导到login.aspx,如果没有找到记录,则应该指向newdevice.aspx页面。我想在Page_Load上发生这种情况,但到目前为止还无法解决这个问题。

3 个答案:

答案 0 :(得分:2)

这是如何做到的基本想法:)

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");
}

}

答案 1 :(得分:0)

也许我错过了您正在寻找的内容,但为了重定向页面,您可以按如下方式调用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 Database查找等有关,请澄清。

答案 2 :(得分:0)

您有两个主要选项来处理这种情况。您可以使用Response.Redirect或Server.Transfer。

建议您将Server.Transfer用于内部重定向,将Response.Redirect用于外部重定向为Server.Transfer leads to a lighter server load and fits the ASP.NET work flow better。 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运行时结束当前页面的处理并立即发送重定向。