日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

如何在 .NETCore 中修改 QueryString ?

發(fā)布時(shí)間:2023/12/4 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在 .NETCore 中修改 QueryString ? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

咨詢區(qū)

  • vcsjones

我有一個(gè)絕對(duì)路徑的 url 包含了 querystring,現(xiàn)在我想對(duì) querystring 進(jìn)行修改和添加,我不想生硬的用字符串提取,或者是 正則表達(dá)式,而且還有惡心的 編碼解碼 問(wèn)題,所以我更希望用 .NETCore 中內(nèi)建的工具提取,而且也不需要操心 escape 問(wèn)題。

我知道在 Asp.NET 中有一個(gè) HttpUtility ,但在 .NETCore 中并沒(méi)有 System.Web ,無(wú)法實(shí)現(xiàn),請(qǐng)問(wèn)我該如何處理呢?

回答區(qū)

  • vcsjones

如果你用的是 ASP.NET Core 1,2 的話,可以在nuget上找一下 Microsoft.AspNetCore.WebUtilities.QueryHelpers 工具包,如果是 ASP.NET Core 3.0 以上版本, WebUtilities 已經(jīng)內(nèi)置到 ASP.NET SDK 了,可參考如下例子:

var?uri?=?new?Uri(context.RedirectUri); var?queryDictionary?=?Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(uri.Query);

值得一提的是, 和 System.Web 下的 ParseQueryString 不同的是,ASP.NET Core 下返回的是 IDictionary<string, StringValues> ,這個(gè) value 表示string的集合,所以當(dāng) querystring 中有多個(gè)重名時(shí)所有同名key都能提取出來(lái)。

總的來(lái)說(shuō),如果你想在 querystring 中添加參數(shù),可以使用 QueryHelpers 。

var?parametersToAdd?=?new?System.Collections.Generic.Dictionary<string,?string>?{?{?"resource",?"foo"?}?}; var?someUrl?=?"http://www.google.com"; var?newUri?=?Microsoft.AspNetCore.WebUtilities.QueryHelpers.AddQueryString(someUrl,?parametersToAdd);

如果想獲取,可以像下面這樣。

var?request?=?HttpContext.Request; var?query?=?request.Query; foreach?(var?item?in?query){Debug.WriteLine(item)? }

最后會(huì)得到如下的 key:value 鍵值對(duì)。

[0]?{[companyName,?]} [1]?{[shop,?]} [2]?{[breath,?]} [3]?{[hand,?]} [4]?{[eye,?]} [5]?{[firstAid,?]} [6]?{[eyeCleaner,?]}
  • Gabriel Luca

我在 HttpContext 類中做了一個(gè)擴(kuò)展,代碼如下:

public?static?string?AddOrReplaceQueryParameter(this?HttpContext?c,?params?string[]?nameValues){if?(nameValues.Length%2!=0){throw?new?Exception("nameValues:?has?more?parameters?then?values?or?more?values?then?parameters");}var?qps?=?new?Dictionary<string,?StringValues>();for?(int?i?=?0;?i?<?nameValues.Length;?i+=2){qps.Add(nameValues[i],?nameValues[i?+?1]);}return?c.AddOrReplaceQueryParameters(qps);}public?static?string?AddOrReplaceQueryParameters(this?HttpContext?c,?Dictionary<string,StringValues>?pvs){var?request?=?c.Request;UriBuilder?uriBuilder?=?new?UriBuilder{Scheme?=?request.Scheme,Host?=?request.Host.Host,Port?=?request.Host.Port????0,Path?=?request.Path.ToString(),Query?=?request.QueryString.ToString()};var?queryParams?=?QueryHelpers.ParseQuery(uriBuilder.Query);foreach?(var?(p,v)?in?pvs){queryParams.Remove(p);queryParams.Add(p,?v);}uriBuilder.Query?=?"";var?allQPs?=?queryParams.ToDictionary(k?=>?k.Key,?k?=>?k.Value.ToString());var?url?=?QueryHelpers.AddQueryString(uriBuilder.ToString(),allQPs);return?url;}

然后像下面這樣使用。

var?next?=?Context.Request.HttpContext.AddOrReplaceQueryParameter("page",Model.PageIndex+1+"");var?prev?=?Context.Request.HttpContext.AddOrReplaceQueryParameter("page",Model.PageIndex-1+"");

點(diǎn)評(píng)區(qū)

WebUtilities 下的 QueryHelpers 確實(shí)比較好用,學(xué)習(xí)了。

總結(jié)

以上是生活随笔為你收集整理的如何在 .NETCore 中修改 QueryString ?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。