2

クエリ文字列から値を取得し、それをグリッドビューにバインドする SqlDataSource があります。クエリ文字列の値にバックスラッシュが含まれていない限り、すべてがうまく機能します。バックスラッシュをエスケープするにはどうすればよいですか?

例:

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 に答える