2

我有一个 SqlDataSource,它从查询字符串中获取一个值并将其与 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>

谢谢你的帮助。

4

3 回答 3

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 函数。

于 2012-03-09T02:19:42.293 回答
2

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

于 2012-03-09T00:48:20.563 回答
0

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

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

于 2012-06-18T22:27:33.827 回答