2010-11-19 44 views
2

&シンボルは、oDataの次のクエリでどのように処理されますか?oDataクエリで特殊文字はどのように処理されますか?

/vendordataservice.svc/vDataMapper_SourceMapVendor?&$filter=startswith(ParentName,'AT&T')&$top=7&$skip=0 

私はEF3.5とSQL2008を使用しています。そのデータをoDataサービスに送信すると、データは返されません。ここで

+0

で交換する必要があります%置換はまた、その後%が含まれているため、注意を払うあなたはこの自分を生産していますか?あなたはそれをエンコードするべきではありませんか? –

+0

@Craig - そのGET文字列は、フィルタが適用されたときに私のTelerikコントロールによって作成されます。彼らはそれをエンコードすべきでしょうか?私は確信していませんが、おそらく。他にどのような文字をエンコードする必要がありますか? HTMLでエンコードされているはずですか? – LamonteCristo

+0

'&'文字はURIごとにRFCごとに予約されています。はい、エンコードする必要があります。 –

答えて

3

「JavaScript String replace()メソッド」は使用しないでください。これは、特殊文字の最初の出現を置き換えます。フィルタリングパラメータで同じ特殊文字が2回出現した場合、失敗します。正規表現を使用して文字を置き換えます。

function replaceSpecialCharacters(attribute) { 
    // replace the single quotes 
    attribute = attribute.replace(/'/g, "''"); 

    attribute = attribute.replace(/%/g, "%25"); 
    attribute = attribute.replace(/\+/g, "%2B"); 
    attribute = attribute.replace(/\//g, "%2F"); 
    attribute = attribute.replace(/\?/g, "%3F"); 

    attribute = attribute.replace(/#/g, "%23"); 
    attribute = attribute.replace(/&/g, "%26"); 
    return attribute; 
} 

またそれは自己が初め

関連する問題