次のクエリ文字列があり、クエリ文字列の一部を削除または更新したい
?language=en-us&issue=5&pageid=18&search=hawaii&search=hawaii
// これは私がフォーマットする必要があるものです
問題は、検索キーのクエリ文字列が重複していることです。
次のコードを試しましたが、機能していません
public static string RemoveQueryStringByKey(string url, string key)
{
var uri = new Uri(url);
// this gets all the query string key value pairs as a collection
var newQueryString = HttpUtility.ParseQueryString(uri.Query);
// this removes the key if exists
newQueryString.Remove(key);
// this gets the page path from root without QueryString
string pagePathWithoutQueryString = uri.GetLeftPart(UriPartial.Path);
return newQueryString.Count > 0
? "{0}?{1}".FormatWith(pagePathWithoutQueryString, newQueryString)
: pagePathWithoutQueryString;
}
FormatWith エラーが発生する
string' does not contain a definition for 'FormatWith' and no extension method 'FormatWith' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?
作業コード:
public static string RemoveQueryStringByKey(string url, string key)
{
var uri = new Uri(url);
// this gets all the query string key value pairs as a collection
var newQueryString = HttpUtility.ParseQueryString(uri.Query);
// this removes the key if exists
newQueryString.Remove(key);
// this gets the page path from root without QueryString
string pagePathWithoutQueryString = uri.GetLeftPart(UriPartial.Path);
return newQueryString.Count > 0
? string.Format("{0}?{1}", pagePathWithoutQueryString, newQueryString)
: pagePathWithoutQueryString;
}
関数呼び出し
var URL = Request.Url.AbsoluteUri;
var uri = new Uri(Helper.RemoveQueryStringByKey(URL, "search"));
私の実際のロジックsearch
では、QueryString が存在するかどうかを確認する必要があります。存在する場合は、それを削除して新しい検索キーワードに置き換えます。
ロジックに従って適用できます。機能していなかった最初のコード例はFormatWith
、修正できなかったために修正できなかったため、私にとって機能するソリューション提供を使用Oded
しました。