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
とtitle
の値は2つのフィールドに入力されます。次に、ユーザーはsave
またはcancel
をクリックする必要があります。問題は、ブックマークページが値をフィールドに入力すると、それらがデコードされることです。次に、保存しようとしても、pdfname
値のurl
値にスペースが含まれているため、保存できません。スペースを入れないためにリンクが必要です。ですから、基本的には、フィールドに入力した後も、スペースではなく%20
になるようにしたいと思います。
source
、auto
、またはtitle
には問題はなく、url
..だけです。
これを解決する方法はありますか? %20
に使用できる特別なエスケープ文字のように?
注:ブックマークページを変更することはできません。
私はc#/ asp.netを使用してリンクを作成し、そこに移動しています。
ありがとう
.NET Framework 4.5以降、WebUtility.UrlEncode
を使用できます。
System.dll
にあるため、追加の参照は必要ありません。
Uri.EscapeUriString
とは異なり、URLの文字を適切にエスケープします
Uri.EscapeDataString
とは異なり、文字列の長さに制限がないため、POSTリクエストに使用できます。
System.Net.WebUtility.UrlEncode(urlText)
別のオプションは
System.Uri.EscapeDataString()
Uri.EscapeDataString()およびUri.UnescapeDataString()は、UrlEncode/UrlDecodeメソッドと比較して安全であり、デコード時にプラス文字をスペースに変換しません。
別のユーザーからの詳細: http://geekswithblogs.net/mikehuguet/archive/2009/08/16/134123.aspx
URLを渡す直前にHttpUtiltyのUrlEncode
メソッドを使用するだけです。
string encoded = HttpUtility.UrlEncode(url);