我有一个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>
感谢您的帮助。
答案 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的建议)。