24

URL パラメーターを含むリンクを含む URL パラメーターを作成するリンクを作成しています。問題は、このようなリンクがあることです

http://mydomain/_layouts/test/MyLinksEdit.aspx?auto=true&source=
    http://vtss-sp2010hh:8088/AdminReports/helloworld.aspx?pdfid=193
&url=http://vtss-sp2010hh:8088/AdminReports/helloworld.aspx?pdfid=193%26pdfname=5.6%20Upgrade
&title=5.6 Upgrade

このリンクは、これらのパラメーターを読み取るブックマーク追加ページに移動します。

auto次のパラメータを読み取るかどうか

sourceは、追加またはキャンセルが完了した後に移動する場所です

urlブックマークリンクです

titleブックマークの名前です

urlとの値がtitle2 つのフィールドに入力されます。次に、ユーザーはsaveまたはをクリックする必要がありますcancel。問題は、ブックマーク ページがフィールドに値を入力すると、値がデコードされることです。pdfname次に、保存しようとすると、値のurl値にスペースが含まれているため、保存できません。リンクにスペースがないようにする必要があります。基本的には、フィールドに入った後も%20スペースではなく のままにしたいのです。

sourceauto、または...titleだけで問題はありません。url

これを解決する方法はありますか?%20?に使用できる特別なエスケープ文字のように。

注: ブックマーク ページを変更することはできません。

私は c#/asp.net を使用してリンクを作成し、そこに移動しています。

ありがとう

4

3 に答える 3

37

.NET Framework 4.5 以降で使用できますWebUtility.UrlEncode

これは にSystem.dllあるため、追加の参照は必要ありません。

とは異なり、URL の文字を適切にエスケープします。Uri.EscapeUriString

とは異なり、文字列の長さに制限がないUri.EscapeDataStringため、POST リクエストに使用できます。

 System.Net.WebUtility.UrlEncode(urlText)

別のオプションは

 System.Uri.EscapeDataString() 
于 2013-06-21T18:16:21.373 に答える
2

URL を渡す直前に HttpUtilty のUrlEncodeメソッドを使用するだけです。

 string encoded = HttpUtility.UrlEncode(url);
于 2013-06-21T18:14:16.760 に答える