好的,我有一个default.aspx页面,我试图将用户重定向到另一个页面,具体取决于他们的deviceId是否存储在SQL Server数据库中。如果找到用户的记录,它应该将用户引导到login.aspx,如果没有找到记录,则应该指向newdevice.aspx页面。我想在Page_Load上发生这种情况,但到目前为止还无法解决这个问题。
答案 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运行时结束当前页面的处理并立即发送重定向。