有类似这样的URL:
http://ip/page.aspx?id=888#123456789使用Request.QueryString["id"],只能获取到888,原因是在URL里面“#”符号表示的是标记。请问怎么样能完整获得“888#123456789”整串字符串?

解决方案 »

  1.   

    你就不能换个字符麽,然后replace()一下就行了
      

  2.   

    假如#是做为参数值的一部分,那么应该对url进行编码,Server.UrlEncode(),取出时解码Server.UrlDecode()。
      

  3.   

    Request.Path、Request.RawUrl,以及Request.Url下的那么多属性,你都可以查看一下!
      

  4.   

    应该对参数值888#123456789进行url编码,否则一般取不到#后面的东西。
      

  5.   


    嗯是的。看了一下http调试,浏览器根本不发送#部分。
      

  6.   

    http://ip/page.aspx?id=888#123456789
    -----------
    看了一下http调试,浏览器根本不发送#部分。
    =================
    意思上面的地址#123456789这部分是多余的?
    等同于http://ip/page.aspx?id=888
      

  7.   

    #123456789
    这段,是给客户端的锚点使用的,服务器是无法得到的,你要想在服务器端得到,你需要进行UrlEncode编码
    改成http://ip/page.aspx?id=888%23123456789或者在客户端得到,然后ajax发送到服务器端
      

  8.   

    不能获取到. 如果你真的想要. 可以客户端取得了.用ajax传递过去.
      

  9.   

    传递时替换#为其他字符,然后用Server.UrlEncode编码,然后在接收页面,通过Server.UrlDecode解码,然后再将字符替换回来。
    public partial class _Default : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
        string url;
        string name;
        url = "page.aspx?id=";
        name = "888#123456789";
        name = name.Replace("#", "@");
        Response.Redirect(url + Server.UrlEncode(name));
      }
    }public partial class Default2 : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
        string name = Request.QueryString["id"];
                  name = Server.UrlDecode(name);
                  name = name.Replace("@", "#");
        Response.Write(name); 
      }
    }
      

  10.   

    window.location.search (前台)获取锚点
    escape()编译 传参数到 后台 ,   后台获取前台传过来的参数 Request.QueryString["?"]