asp.net下URL处理两个小工具方法_实用技巧

有的时候我们要操作一个URL地址中查询参数,为了不破坏URL的原有结构,我们一般不能直接在URL的后面加&query=value,特别是我们的URL中有多个参数时,这种处理更麻烦。
下面两个小方法就是专门用来为一个URL添加一个查询参数或删除一个查询参数,这两个方法隐藏了原URL有无参数,是不是原来就有这个参数,有没有fragment(#anchor)这些细节和处理
/**//// <summary>
/// Add a query to an URL.
/// if the URL has not any query,then append the query key and value to it.
/// if the URL has some queries, then check it if exists the query key already,replace the value, or append the key and value
/// if the URL has any fragment, append fragments to the URL end.
/// </summary>
public static string SafeAddQueryToURL(string key,string value,string url)
{
int fragPos = url.LastIndexOf("#");
string fragment = string.Empty;
if(fragPos > -1)
{
fragment = url.Substring(fragPos);
url = url.Substring(0,fragPos);
}
int querystart = url.IndexOf("?");
if(querystart < 0)
{
url +="?"+key+"="+value;
}
else
{
Regex reg = new Regex(@"(?<=[&\?])"+key+@"=[^\s]*",RegexOptions.Compiled);
if(reg.IsMatch(url))
url = reg.Replace(url,key+"="+value);
else
url += "&"+key+"="+value;
}
return url+fragment;
}
/**//// <summary>
/// Remove a query from url
/// </summary>
/// <param name="key"></param>
/// <param name="url"></param>
/// <returns></returns>
public static string SafeRemoveQueryFromURL(string key,string url)
{
Regex reg = new Regex(@"[&\?]"+key+@"=[^\s]*&?",RegexOptions.Compiled);
return reg.Replace(url,new MatchEvaluator(PutAwayGarbageFromURL));
}
private static string PutAwayGarbageFromURL(Match match)
{
string value = match.Value;
if(value.EndsWith("&"))
return value.Substring(0,1);
else
return string.Empty;
}

测试:
string s = "http://www.cnblogs.com/?a=1&b=2&c=3#tag";
WL(SafeRemoveQueryFromURL("a",s));
WL(SafeRemoveQueryFromURL("b",s));
WL(SafeRemoveQueryFromURL("c",s));
WL(SafeAddQueryToURL("d","new",s));
WL(SafeAddQueryToURL("a","newvalue",s));
// 输出如下:
// http://www.cnblogs.com/?b=2&c=3#tag
// http://www.cnblogs.com/?a=1&c=3#tag
// http://www.cnblogs.com/?a=1&b=2#tag
// http://www.cnblogs.com/?a=1&b=2&c=3&d=new#tag
// http://www.cnblogs.com/?a=newvalue&b=2&c=3#tag 

时间: 2024-10-09 19:25:35

asp.net下URL处理两个小工具方法_实用技巧的相关文章

asp.net下XML的加密和解密实现方法_实用技巧

介绍 我们有3个加密xml的方法 1.仅仅使用对称加密的方法加密xml 这种加密方法只使用一个密钥,也就是说无论是加密xml还是解密xml都使用一个相同的密钥.因为这个密钥不会在被加密的xml中保存,所以我们需要在加密和解密的过程中加载这个密钥并保护它不被窃取. 2.使用对称加密和非对称加密相结合的方法来加密xml 这种方法需要一个用于加密数据的对称密钥和一个用于保护这个对称密钥的非对称密钥.被加密的对称密钥和被加密的数据一起保存在xml文档中.当用私有非对称密钥解密密钥的时候要用公开非对称密钥

基于asp.net下使用jquery实现ajax的解决方法_实用技巧

无论是jquery还是ajax在今天来讨论已经很落后了,网上也有非常多的这方面的资料,但是依然有不少新手对此很茫然.本文以最简单的方法为新手示范如何使用jquery实现ajax技术(所以本文是专为新手所写,老鸟勿喷,大神此处省略一万字).至于什么是jquery什么是ajax,自己谷歌去. 首先新建一个名闻Ajax的asp.net web空应用程序,项目目录如下图所示. 其中.ashx文件是一般处理程序,暂时不用知道它是干嘛用的,后面你就知道了.jquery-1.7.1.js可以在这里下载. 我们

ASP.NET MVC使用Ajax的辅助的解决方法_实用技巧

前言:前面我们已经简单的介绍过了MVC如何Jquery,因为我们如果使用Ajax的话必须要了解Jquery,这篇博客我们将大致了解一下ASP.NET MVC如何使用Ajax的辅助方法,此博客是我的读书笔记,如果那里写的不好,还请各位朋友提出来,我们共同学习.1.准备工作 (1)在MVC刚开始学习的时候,我们就需要介绍ASP.NET MVC框架中的HTML的辅助方法,但是这类文章现在已经很多了,而且个人感觉很简单,所以没有写笔记,我在这里就不介绍了. (2)ASP.NET MVC框架中的HTML辅

asp.net不同页面间数据传递的多种方法_实用技巧

1. Get(即使用QueryString显式传递)方式:在url后面跟参数.特点:简单.方便.缺点:字符串长度最长为255个字符:数据泄漏在url中.适用数据:简单.少量.关键的数据.适用范围:传递给自己.传递给另一个目标页面:常用于2个页面间传递数据.用法:例如:url后加?UserID=-,跳转到目标页面,目标页面在伺服端可用Request.QueryString["InputText"]获取其指定参数值. 2. Post方式:通用的方式.利用form提交.特点:最常用的方法.常

asp.net基于windows服务实现定时发送邮件的方法_实用技巧

本文实例讲述了asp.net基于windows服务实现定时发送邮件的方法.分享给大家供大家参考,具体如下: //定义组件 private System.Timers.Timer time; public int nowhour; public int minutes; public string sendTime; public Thread th; public string isOpen;//是否启用定时发送 public string strToEUser; public static i

asp.net异步获取datatable并显示的实现方法_实用技巧

本文讲述了asp.net异步获取datatable并显示的实现方法.分享给大家供大家参考,具体如下: 上面就是结果,前台代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="MethodOne.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XH

asp.net及javascript判断是否手机访问的方法_实用技巧

本文实例讲述了asp.net及javascript判断是否手机访问的方法.分享给大家供大家参考,具体如下: /// <summary> /// 判断手机用户UserAgent /// </summary> /// <returns></returns> private bool IsMobile() { HttpContext context = HttpContext.Current; if (context != null) { HttpRequest

asp.net中EXCEL数据导入到数据库的方法_实用技巧

本文实例讲述了asp.net中EXCEL数据导入到数据库的方法.分享给大家供大家参考.具体分析如下: excel是办公中非常常用的一个办公表格了,但我们在开发中通常会需要直接把excel数据快速导入到数据库中了,这里整理了一个asp.net中EXCEL数据导入到数据库的例子供各位参考学习. 注意:EXCEL中的第一行不能导入.下面是源码:IntoExcel.aspx: 复制代码 代码如下: <%@ Page  AutoEventWireup="true" CodeFile=&qu

asp.net中Timer无刷新定时器的实现方法_实用技巧

 本文实例讲述了asp.net中Timer无刷新定时器的实现方法.Timer控件要实现无刷新,得用到ajax技术,这里使用VS2008自带的ajax技术.    首先得添加一个ScriptManager控件,然后再添加一个UpdatePanel用于存放Timer控件内容的,就可以实现无刷新了.下面是详细的内容: 一.前台代码如下: <form id="form1" runat="server"> <asp:ScriptManager ID=&quo