我正在使用asp.net开发网站。在我的网站登录后,我为我的网站需要为已登录用户设置会话。并在每个页面上检查该会话是否为空或具有值,并取决于我重定向到登录页面的值。
我的问题是登录后我想重定向到之前浏览过的网页,我是按照以下方式完成的 -
用于检查会话值的特定页面上的代码 -
if (Session["EmployeeID"] != null)
{
}
else
{
Response.Redirect(ResolveUrl("~/login.aspx?IsTimeout=1"), true);
}
登录页面上的代码 -
If Request.QueryString("IsTimeout") IsNot Nothing Then
If Request.QueryString("IsTimeout") = "1" Then
Login1.DestinationPageUrl = Request.UrlReferrer.ToString()
End If
End If
有没有其他方法以正确的方式做到这一点?
答案 0 :(得分:3)
我不确定正确的方法......但我正在做这样的事情......
我有一个请求登录页面并传递引用者参数的函数
protected void RequestLogin()
{
string OriginalUrl = HttpContext.Current.Request.RawUrl;
string LoginPageUrl = "~/LogIn.aspx";
HttpContext.Current.Response.Redirect(String.Format("{0}?ReturnUrl={1}",
LoginPageUrl, OriginalUrl));
}
,这是登录后的重定向。
if (this.Request.QueryString["ReturnUrl"] !=null)
{
this.Response.Redirect(Request.QueryString["ReturnUrl"].ToString());
}
else
{
this.Response.Redirect("Default.aspx");
}
答案 1 :(得分:0)
您可以使用Request.UrlReferrer.ToString()来完成此操作。这将为您提供用户所在的最后一页的名称。那么你可以做一个response.redirect(Request.UrlReferrer.ToString())或类似的东西。抱歉,伪代码。
答案 2 :(得分:0)
保存上一页网址,以便在从其他网页重定向页面时查看状态,并在回发生成时重定向到最后一页..
试试这个:
protected void Page_Load(object sender, EventArgs e)
{
if( !IsPostBack )
{
ViewState["RefUrl"] = Request.UrlReferrer.ToString();
}
if (Session["EmployeeID"] != null)
{
}
else
{
object refUrl = ViewState["RefUrl"];
if (refUrl != null)
Response.Redirect((string)refUrl);
}
}
价:
How to go back to the previous page in ASP.NET 2.0
Asp.net论坛 - redirect to previous page RSS
答案 3 :(得分:0)
有没有其他方法以正确的方式做到这一点?
好吧,我认为有。当ASP.NET提供.NET Forms身份验证时,不要重写身份验证,超时和重定向。如果会话超时,它将自动添加您可以在身份验证代码中处理的“ReturnUrl”。查看this link,了解有关实施表单身份验证的源代码和讨论,并利用其他功能......
答案 4 :(得分:0)
我认为这个问题的最佳解决方案是在项目的集中页面中工作..根据这一点,我们找不到合适的页面而不是我们项目的母版页来完成这项工作。我将编写一些代码来说明我们如何实现该问题:
// In Login Page ..
// I used a submit button to figure out the event of my code ..
protected void ButtonInsert_Click(object sender, EventArgs e)
{
Session.Add("EmployeeID", 100); // This 100 is just a fixed value ..
if (!String.IsNullOrEmpty(Request.QueryString["Red_Page"]))
{
Response.Redirect(Request.QueryString["Red_Page"]);
}
else
{
Response.Redirect("EmployeeDepartment.aspx");
}
}
// In Master Page ..
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// In Master Page
if (Session["EmployeeID"] != null)
{
// Write ur business Code
}
else
{
// I stored the Page URL in uery String.
// Stroing the URL in a cookie will be also a good alternative solution ..
string CurrentURLBeofreTimeout = Request.RawUrl;
string LoginURL = "login.aspx";
string newURL = string.Format("{0}?Red_Page={1}", LoginURL, CurrentURLBeofreTimeout);
Response.Redirect(newURL);
}
}
}