例如在aa.aspx里,有一句:string gg=Request["id"].ToString().Trim();
Response.Write(gg);我现在向aa.aspx送数据: .../aa.aspx?id=#&+但是没有任何显示,请问怎样让 request接收 # & + 这三个符号然后显示正常? 先谢谢了!

解决方案 »

  1.   

    "../aa.aspx?id="+Server.UrlEncode("#&+")
      

  2.   

    "../aa.aspx?id="+Server.HtmlEncode("#&+")
    提取的时候
    Server.HtmlDecode()
      

  3.   

    谢谢各位,但我要的效果是我在地址栏里输入: http://127.0.0.1/aa.aspx?id=#&+那么gg=Request["id"].ToString().Trim() 就会接收到 #&+  ,请问怎样实现呢?
      

  4.   

    或者如果其它方法可以接收到 id=#&+ 也可以,不一定非要用request,谢谢!
      

  5.   

    string url=Request.RawUrl;
    string gg=url.Substring(url.IndexOf("=")+1);
      

  6.   

    "../aa.aspx?id="+Server.HtmlEncode("#&+")
    提取的时候
    Server.HtmlDecode()----------
    应该可以的.如果是固定的"#&+"那还需要传递吗?你直接使用不可以了.
    还有一种方法--替换比如用"aaaaa"替换"&".
    在接受的页面去寻找"aaaaa",若找到了,就替换为&
    string str = Request["id"]
    str.Regex.Replace("aaaaa","&");
    ----------
    需要using System.Text.Regu.....空间
      

  7.   

    xiaohuasz() ,我试过你的方法了,不行啊, 什么都没有显示.adandelion(猪头) ,#&+ 不是固定的,我这里只是简单化而已,它是和其它字母以不同形态出现的,但始终有 #&+ 这些字符.
      

  8.   

    我上面给的方法,在Response.Redirect("aa.aspx?id=#&+");情况下有用下面的应该符合你的要求,直接在地址栏输也能取到值
    private void Page_Load(object sender, System.EventArgs e)
    {
    this.RegisterStartupScript("","<script>window.onload=function(){var s=window.location.href;document.all.Label1.innerText=s.substring(s.indexOf('=')+1);}</script>");
    }
      

  9.   

    不要意思啊,还是什么都没有,我在地址栏是这样输入的: http://127.0.0.1/aa.aspx?id=#&+因为老是提示换行符号的问题,aa.aspx里的Page_Load里面是这样的:private void Page_Load(object sender, System.EventArgs e)
    {
    string gg;string yy="<script>window.onload=function(){var s=window.location.href;document.all.Label1.innerText=s.substring(s.indexOf('=')+1)";yy=yy+@";}";
    yy=yy+@"</";
    yy=yy+"script>";
    this.RegisterStartupScript("",yy);}请问问题出在哪里? 如果我要把 id=#&+ 传给gg,应该怎样呢?
      

  10.   

    上面的客户端脚本只是截获了客户端输入的url,如果默认提交的话,非法字符会被过滤掉,所以最好就是进行url编码
    如果非要强行在服务端获得的话,只能通过规避的方法,先利用客户端脚本取得字符,再重新提交到服务器
    protected System.Web.UI.HtmlControls.HtmlInputHidden Hidden1;
    protected string gg;
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!this.IsPostBack)
    {
    this.RegisterStartupScript("","<script>var s=window.location.href;document.all.Hidden1.value=s.substring(s.indexOf('=')+1);document.Form1.submit();</script>");
    }
    gg=Request.Form["Hidden1"];
    Response.Write(gg);
    }
      

  11.   

    xiaohuasz() ,太谢谢你了,但还是什么显示都没有,我在地址栏是这样输入的: http://127.0.0.1/aa.aspx?id=#&+整个aa.aspx是这样的:<script language="C#" runat="server">protected System.Web.UI.HtmlControls.HtmlInputHidden Hidden1;
    protected string gg;  public void Page_Load(Object Src, EventArgs E ) 
        {
         if(!this.IsPostBack)
    {
    this.RegisterStartupScript("","<script>var s=window.location.href;document.all.Hidden1.value=s.substring
    (s.indexOf('=')+1);document.Form1.submit()"+@";<"+@"/script>");
    } gg=Request.Form["Hidden1"];
    Response.Write(gg);    }</script>
      

  12.   

    原来你是把代码和标签混在一起写的!
    <form method=post name="Form1" id="Form1" runat=server>
    <input type=hidden name="Hidden1" id="Hidden1" runat=server>
    </form>
    <script language="C#" runat="server">
    protected string gg;
    public void Page_Load(Object Src, EventArgs E ) 
        {
         if(!this.IsPostBack)
    {
    this.RegisterStartupScript("","<script>var s=window.location.href;document.all.Hidden1.value=s.substring
    (s.indexOf('=')+1);document.Form1.submit()"+@";<"+@"/script>");
    } gg=Request.Form["Hidden1"];
    Response.Write(gg);    }
    </script>
      

  13.   

    xiaohuasz() ,太谢谢你,终于成功:)
      

  14.   

    xiaohuasz() 
    若传递多个参数咋办??????