如何在查询字符串中转义反斜杠

时间:2012-03-09 00:43:42

标签: asp.net string escaping backslash querystringparameter

我有一个SqlDataSource,它从querystring获取一个值并将其与gridview绑定。除非查询字符串值中有反斜杠,否则一切都很顺利。如何逃避反斜杠?

示例:

www.example.com?id=testuser - >的工作原理。

www.example.com?id=test\user - >即使“test \ user”存在也不起作用。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>" 

    SelectCommand="SELECT * FROM User WHERE userID = @id">
    <SelectParameters>
        <asp:QueryStringParameter Name="id" 
            QueryStringField="id" DbType="String" />
    </SelectParameters>
</asp:SqlDataSource>


<form id="form1" runat="server">
  <div>
    <asp:GridView ID="GridViewTask" runat="server" AutoGenerateColumns="False" 
        DataSourceID="SqlDataSource1">
        <Columns>                
            <asp:BoundField DataField="UnitId" HeaderText="UnitId" ReadOnly="True" 
                SortExpression="UnitId" />
            <asp:BoundField DataField="UserName" HeaderText="UserName" ReadOnly="True" 
                SortExpression="UserName" />           
        </Columns>
    </asp:GridView>
  </div>
</form>

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

尝试使用内置实用程序:

    String Url = @"www.example.com?id=test\user";

    Url = HttpUtility.UrlEncode(Url);

http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx

提示:还有一个UrlDecode函数。

答案 1 :(得分:1)

反斜杠在查询字符串中为%5C

答案 2 :(得分:0)

您确定“www.example.com?id=test\user”是否成功运行该页面? URL中的斜杠可能导致服务器尝试在错误的位置查找错误的页面。

如果您从其他页面/程序创建URL,则使用Server.UrlEncode;如果你手动创建它,你应该自己编码(使用John对%5C的建议)。

相关问题