情况这样的,我有2个页面 web1,web2
点击web1的超级链接,传递个id给web2
web1代码:<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                            <Columns>
                                <asp:TemplateField>
                                    <ItemTemplate>
                                        <a href=web2.aspx?id=<%#DataBinder.Eval(Container.DataItem,"username") %>' target="_blank">
                                            <%#DataBinder.Eval(Container.DataItem,"username")%>
                                        </a>
                                    </ItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                        </asp:GridView>然后web2显示1的详细信息,
web2代码:
string   id=Request["id"].tostring();
但是奇怪现象是,当我传递的 id="我们我们我们",的时候   string id接受的是正确的,但是当我的id="鹅"的时候,确无法传递过去,然后我更改成id="大企鹅"的时候传递过去后接收的只能是   ”大企“   也就说那个鹅字被屏蔽掉了,但是在IE上面看到的确还是    web2.aspx?id=大企鹅      但是在C#里面Request那个鹅字就失踪了,我用断电跟踪了,就是这个现象,我用的是ACCESS数据库,IE,遨游全用了,但是还是这个问题,长度有限制?那么我用10个“我们”还是可以的,但是就那个鹅字不行,然后我又测试了下其他字,也有一部分是不行的,究竟怎么回事?REQUEST难道还有其他的方法?

解决方案 »

  1.   


    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                                <Columns>
                                    <asp:TemplateField>
                                        <ItemTemplate>
                                            <a href=web2.aspx?id=<%# Server.UrlEncode(Eval("username").ToString()) %>' target="_blank">
                                                <% Eval("username") %>
                                            </a>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>
                            </asp:GridView>接收:string  id = Server.UrlDecode(Request.QueryString["id"]);
      

  2.   

    我觉得这个可能是编码的问题,当ASP.NET把url中的中文编码转换成Request对象里Item时,可能把有些字符给截断了,因为这些字符中可能包含默认编码认为的字符串终结符。楼主不妨用以写UrlEncode把中文字符编一下码试一试,然后在使用的时候哟就高UrlDecode解一下码。纯属个人观点,不一定正确。
      

  3.   

    中文除了urlencode编码以外,lz的代码还有个问题.就是href后面的'号不成对,后面有' 前面没有.
      

  4.   

     Server.UrlDecode
     Server.UrlEncode
      

  5.   

    <a href='web2.aspx?id=<%# HttpUtility.UrlEncode(Eval("username").ToString())%>' target="_blank">
    <%#DataBinder.Eval(Container.DataItem,"username")%>
     </a>
    web2.aspx
    HttpUtility.UrlEncode(Request.QueryString["id"].ToString());
      

  6.   

    很简单 就是urlencode 问题
      

  7.   

    楼主这个有问题呀:string  id=Request["id"].tostring(); 一般URL后面的参数用这个 Request.QueryString["id"], 表单域的话,用
    Request.Form["id"], COOKIE用 Request.Cookie["id"]再试一下看行不
      

  8.   

    总结下  web页面上默认传递的是 utf-8   所以需要在webconfig里面设置成传递的是GB2312否则  utf-8丢汉字,   去webconfi里面写句话  设置字符编码就ok了