if (Request.QueryString["ReturnUrl"] != null)//判断是否有上一级页面,如果有登陆后返回之前的页面
{
FormsAuthentication.RedirectFromLoginPage(username, false);
}
else
{
FormsAuthentication.SetAuthCookie(username, false);//直接进到默认页面
Response.Redirect("admin/main.aspx",false);
}
2、Request.UrlReferrer.ToString() //上次请求的url
Response.Redirect("页面地址");
3、Request.UrlReferrer.ToString() //上次请求的url 这个问题是 不是object型
=====
如果不存在的话 会发生错误
ViewState["url"] = "/user/UserInfo.aspx";
if (!object.Equals(Request.QueryString["ReturnUrl"], null))
{
string fromurl = Request.QueryString["ReturnUrl"].ToString().Trim();
if (fromurl != "")
{
ViewState["url"] = fromurl;
}
}
else
{
if (!object.Equals(Request.ServerVariables["Http_Referer"], null))
{
string urlrefer = Request.ServerVariables["Http_Referer"].ToString().Trim().ToLower();
string thisurl = Request.Url.ToString().ToLower();
if (urlrefer != "" && urlrefer.IndexOf("/login.aspx") == -1 && thisurl.IndexOf(urlrefer) == -1)
{
ViewState["url"] = urlrefer;
}
}
}
4、登陆页面
page_load
if (!IsPostBack)
{
ViewState["url"] = Request.UrlReferrer.ToString();
}
登陆验证事件
if ()
{
Response.Redirect(ViewState["url"].ToString());
}
else
{
//
}
5、Request.UrlReferrer.ToString() //上次请求的url 这个问题是 不是object型
=====
如果不存在的话 会发生错误
呵呵,没考虑为空的情况
ViewState["url"] = Request.UrlReferrer==null?"default.aspx":Request.UrlReferrer.ToString();//如果为空
就转向默认页面
//---------------------------------------------------------------------------------
返回上一页的这个东东在我们做项目的时候一般是用于填写完表单后确认的时候,有对原来输入的数据进行修改时用的,或者是因为网站为了方便浏览者而有心添加的一个东东,一般这种功能的实现在ASP.net中都是用一个button的控件来实现的,实现的方法有很多,今天恰好在做项目时碰到要用这个东东,我就把能实现" 返回上一页","返回前一页"的几种方法总结了一下,供大家学习之用,请多多指教:
其实要实现这个功能主要还是要用到javascript
方法一:
在asp.net的aspx里面的源代码中
<input type="button οnclick="javascript:window.history.go(-1);"value="返回上一页">
浅析:这个是用了HTML控件,通过一个onclick的事件,调用了javascript中的一个方法就可以了。这个是最简单的了,也同样适用于静态页面,ASP页面等。
方法二:
利用Reponse.write
如果你对ASP有一定的了解,那么对Response.write这个东东就不会陌生了,方法一是直接有HTML页面中实现,则这个则是在后台环境中实现(这个说法好像不是很规范,呵呵)
Response.write(" <script language=javascript>history.go(-2); </script>)
<a href="#" οnclick="javascript:history.back();">返回前一页 </a>
这里为会么要采用-2的值呢,我个人认为是这样的:因为在asp.net中的页面,当你按下一个button后,由于页面中会实现page.postback的缘故,实际上在这其中是刷新了两次页面,我们要的是第一次的,所以就......
方法三
利用Response.Redirect() 或 server.transfer()
在page_load中加入
if(!IsPostBack)
ViewState["retu"]=Request.UrlReferrer.ToString();
而在在返回按钮事件中
Response.Redirect(ViewState["retu"].ToString());
或Server.Transfer (ViewState["retu"].ToString());
浅析:
Request.UrlReferrer可以获取客户端上次请求的url的有关信息,我们在使用这个的时候最好对其进行一个判断
if(ViewState["UrlReferrer"]!=null)
Response.Redirect(ViewState["UrlReferrer"].ToString();
else
{
Response.write("对不起,当前是最前页码“);
这样才好使一点点喔
}
//Request.UrlReferrer详解
Request.UrlReferrer可以获取客户端上次请求的url的有关信息。
这样我们就可以通过这个属性返回到“上一页”,
示例如下
1. 首先在Page_load中获得并储存该信息
Page_load(object obj,EventArgs e)
{
if(!IsPostBack)
{
if(Request.UrlReferrer!=null) //
{
ViewState["UrlReferrer"]=Request.UrlReferrer.ToString();
}
}
}
l 页面回发后会改变Request.UrlReferrer,将其指向当前页面,所以需要进行判断:只有在第一次请求页面的时候才储存该信息
l 因为可能“上一次”的url不存在,所以需要进行判断,只有在Request.UrlReferrer存在的情况下才进行储存
2. 然后在返回函数中使用该信息
void Return()
{
if(ViewState["UrlReferrer"]!=null)
Response.Redirect(ViewState["UrlReferrer"].ToString();
}
在使用Request.UrlReferrer时还要注意:
1. 如果上一页面使用document.location方法导航到当前页面,Request.UrlReferrer返回空值
2. 如果有A,B两个页面,在浏览器中直接请求A页面,在A页面的中Page_Load事件中导航到B 页面,则 Request.UrlReferrer返回空。因为 在Page_load事件中页面还未初始化,所以无法记录当前页的信息,导航到b页面也就无法获得上一页面的信息
3. 点击刷新按钮不会改变Request.UrlReferrer