Response.Write写的关于页面返回上一页并且带有参数的问题

Response.Write("<script language='javascript'> alert('登录成功!将自动跳转到上次页面!');window.location.href='history.go(-1)?userid="&((userMessage)Session["modelusers"]).userid&"';</script> ");请问错在哪里呢?急啊
从antenatal.aspx点击登录按钮到webforeLogin.aspx。我希望登录后返回到antenatal.aspx页面。webforeLogin.aspx.cs的代码:
protected void denglu_ServerClick(object sender, EventArgs e)
{
String a = Request.ServerVariables["HTTP_REFERER"];
String b = a.Substring(35,17);
userMessage modelusers = new userMessage();
modelusers.userName= this.txt_username.Value;
modelusers.password= this.txt_pwd.Value;
userMessageBLL userbll = new userMessageBLL();
modelusers = userbll.userExist(modelusers);
if (modelusers.userid== -1)
{
Response.Redirect("webforeLogin.aspx");
}
else
{
Session["modelusers"] = modelusers;
Response.Redirect(b+ "?userid=" + ((userMessage)Session["modelusers"]).userid, true);

}
}

vb.net?
history不能带参数。这样的只能先取提交过来的页面地址,然后href页面地址,如下

dim referer = Request.ServerVariables["HTTP_REFERER"] '好像vb.net用dim就能定义
......window.location.href='"& referfer &"?userid="......

恩,知道是asp.net就是看你写的&符合应该用的是vb.net不是用c#
你自己就定义一个字符变量获取Request.ServerVariables["HTTP_REFERER"]
然后转向的时候用这个变量转向就行
Request.ServerVariables["HTTP_REFERER"] 是获取当前页面是从那个url过来的,如果直接在浏览器输入的网址,Request.ServerVariables["HTTP_REFERER"] 就是空的

可能是你在当前页提交给当前页了,具体发代码上来

不能这样写,这样取的肯定是当前页的
先在webforeLogin.aspx里面加个HiddenField,id假设命名为refererurl
在webforeLogin.aspx.cs里面的Page_Load里面加
if (!IsPostBack) {
refererurl.Value = Request.ServerVariables["HTTP_REFERER"];
}
把之前的页面url先保存起来,在点击denglu按钮时取这个HiddenField的值就行
就是在denglu_ServerClick里
protected void denglu_ServerClick(object sender, EventArgs e)
{
userMessage modelusers = new userMessage();
modelusers.userName = this.txt_username.Value;
modelusers.password = this.txt_pwd.Value;
userMessageBLL userbll = new userMessageBLL();
modelusers = userbll.userExist(modelusers);
if (modelusers.userid == -1)
{
Response.Redirect("webforeLogin.aspx");
}
else
{
Session["modelusers"] = modelusers;
Response.Redirect(refererurl.Value + "?userid=" + ((userMessage)Session["modelusers"]).userid, true);

}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-10
通过题目可以看出,您将history.go(-1) 当成了一个字符串,因为您将它写在单引号里,所以肯定找不到名为“history.go(-1)?....”的界面路径。那么就必然会报错。
其次,history.go() 它是一个方法,它没有返回值。不信你可以在页面跳转的时候输出history.go(-1)试试,一定是undefined. 而且该方面也不能带参数。带了也没有。如果您想自动跳转到上次页建议您使用Request.UrlReferrer 可以得到前一界面的详细路径信息。
建议您去多多了解下,js里 history.go()的实际用法。祝您早日解决问题。

PS:如果是我 ,我会这样做: Response.Write("<script language='javascript'> alert('登录成功!将自动跳转到上次页面!');window.location.href='" + Server.MapPath(Request.UrlReferrer.AbsolutePath + "?userid=" + ((userMessage)Session["modelusers"]).userid) + "';</script> "); 当然,这里有个前提,必须存在上一界面,否则是会报错的哦
相似回答