时间:2021-05-28
有的时候我们要操作一个URL地址中查询参数,为了不破坏URL的原有结构,我们一般不能直接在URL的后面加&query=value,特别是我们的URL中有多个参数时,这种处理更麻烦。
下面两个小方法就是专门用来为一个URL添加一个查询参数或删除一个查询参数,这两个方法隐藏了原URL有无参数,是不是原来就有这个参数,有没有fragment(#anchor)这些细节和处理
///<summary>
///AddaquerytoanURL.
///iftheURLhasnotanyquery,thenappendthequerykeyandvaluetoit.
///iftheURLhassomequeries,thencheckitifexiststhequerykeyalready,replacethevalue,orappendthekeyandvalue
///iftheURLhasanyfragment,appendfragmentstotheURLend.
///</summary>
publicstaticstringSafeAddQueryToURL(stringkey,stringvalue,stringurl)
{
intfragPos=url.LastIndexOf("#");
stringfragment=string.Empty;
if(fragPos>-1)
{
fragment=url.Substring(fragPos);
url=url.Substring(0,fragPos);
}
intquerystart=url.IndexOf("?");
if(querystart<0)
{
url+="?"+key+"="+value;
}
else
{
Regexreg=newRegex(@"(?<=[&\?])"+key+@"=[^\s&#]*",RegexOptions.Compiled);
if(reg.IsMatch(url))
url=reg.Replace(url,key+"="+value);
else
url+="&"+key+"="+value;
}
returnurl+fragment;
}
///<summary>
///Removeaqueryfromurl
///</summary>
///<paramname="key"></param>
///<paramname="url"></param>
///<returns></returns>
publicstaticstringSafeRemoveQueryFromURL(stringkey,stringurl)
{
Regexreg=newRegex(@"[&\?]"+key+@"=[^\s&#]*&?",RegexOptions.Compiled);
returnreg.Replace(url,newMatchEvaluator(PutAwayGarbageFromURL));
}
privatestaticstringPutAwayGarbageFromURL(Matchmatch)
{
stringvalue=match.Value;
if(value.EndsWith("&"))
returnvalue.Substring(0,1);
else
returnstring.Empty;
}
测试:
strings="http:///?a=newvalue&b=2&c=3#tag
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
错误发生的原因是当ASP.NET检测到Web站点配置为使用ASP.NET4.0,本地ASP.NET4.0的组件会传递一个不能扩展的URL到ASP.NET的管理程
本文实例讲述了ASP.NET缓存处理类。分享给大家供大家参考。具体如下:ASP.NET缓存处理类。用法:Justcopythiscodeintoanewclas
在ASP.net中有两个功能相似的方法:eval和bind,那么这两种方法有什么区别呢?看看下面的文章对这两个方法的介绍。eval()方法在运行时使用反射执行后
很多人会问ASP和ASP.net有什么区别呢?ASP与ASP.NET是Microsoft公司在Web应用程序开发上的两项重要技术。虽然ASP和ASP.net
asp.net操作access数据库是常见的数据库操作应用,本文就来实例讲解一下asp.net实现access数据库分页的方法。希望对大家的asp.net程序设