平常可以不在登录的情况下,访问某些页面,比如addUser.aspx
当选择登录后,为了用户体验,通常都会跳转到登录之前的页面,所以是这样构造URL的:login.aspx?from=addUser.aspx
使用Response.Redirect(Request.QueryString["from"])即可实现跳转但如果本身页面就含有参数,如修改用户界面,那么URL是这样的:login?from=modifyUser.aspx?uid=xxx&name=yyy
这个时候使用Requst.QueryString["from"]时,只能得到:modifyUser.aspx?uid=xxx请问各位,有什么好的解决办法吗?

解决方案 »

  1.   

    你把from=modifyUser.aspx?uid=xxx&name=yyy 
    里的&用别的符号代替,使用时再转换过来
      

  2.   

    &&代替&试试吧 呵呵
      

  3.   


    继续问,为什么&不替换 会丢失参数?
      

  4.   

    为什么&不替换 会丢失参数-------------------会被解析成下一个参数
      

  5.   

    菜鸟一只。多看看书。把&变成URL编码
      

  6.   

    login?from=modifyUser.aspx?uid=xxx&name=yyy 
    URL参数标记格式就是?符号和&符号
    ?后为第一个参数,遇到&后为第二个参数。。
    你的这段URL被认为包含了2个参数,from 和 name,第2个?被解析为参数值使用
    要么干脆login?from=modifyUser.aspx&uid=xxx&name=yyy
    或者像楼上的解答uid 和 name 中的字符换成其他字符。
      

  7.   

    login?from=modifyUser.aspx?uid=xxx&name=yyy 因为URL根据&截断。才会出现这种情况。可以将&用其他字符替换,然后再目标页面解析出来。
      

  8.   

    解码:
        Response.Write(HttpUtility.UrlDecode(Request.QueryString["from"])); 编码:
      Response.Redirect("Default.aspx?from="+ HttpUtility.UrlEncode("login?from=modifyUser.aspx?uid=xxx&name=yyy ") +"&cc=de");
      

  9.   

     if (Session["UserName"].ToString() == "")
    {
                Response.Redirect(string.Format("../Login.aspx?url={0}", HttpContext.Current.Request.Url.ToString()));
    }
    上面是没登陆的时候跳转下面是在LOGIN页面里写
     string url = Request.QueryString["url"].ToString();
    if (url != "")
    {
         Response.Redirect(url);
    }