求根据url修改参数后重新生成url的算法要求,可根据不同的情况正确修改url的参数,重新生成新的url,比如http://www.xxx.com/default.aspx?id=1
修改id的值为12
http://www.xxx.com/default.aspx?id=12
http://www.xxx.com/default.aspx?id=1&name=aa
修改id的值为12
http://www.xxx.com/default.aspx?id=12&name=aahttp://www.xxx.com/default.aspx
修改id的值为12,如果不存在则添加
http://www.xxx.com/default.aspx?id=12http://www.xxx.com/default.aspx?name=aa
修改id的值为12,如果不存在则添加
http://www.xxx.com/default.aspx?name=aa&id=12等等谢谢

解决方案 »

  1.   

    http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx
      

  2.   

    获取地址进行字符串截取,这个有什么难度吗?判断id=的位置(有没有id=,没有添加&id=12),然后判断后面有没有&(有&就改id=到&中间的值为12),没有&地址长度,id=位置就可以替换id=的值.
      

  3.   

    最近看FormsAuthenticationModule,反射一下里面的代码,看看系统怎么来处理的。
            if (strUrl.IndexOf('?') >= 0)
            {
                redirectPath = FormsAuthentication.RemoveQueryStringVariableFromUrl(strUrl, "ReturnUrl") + "&ReturnUrl=" + HttpUtility.UrlEncode(str, context.Request.ContentEncoding);
            }
            else
            {
                redirectPath = strUrl + "?ReturnUrl=" + HttpUtility.UrlEncode(str, context.Request.ContentEncoding);
            }
    先判断是否有?,如果没有就直接加上参数,如果有就先去掉再加上。internal static string RemoveQueryStringVariableFromUrl(string strUrl, string QSVar)
    {
        int posQ = strUrl.IndexOf('?');
        if (posQ >= 0)
        {
            string sep = "&";
            string text2 = "?";
            string token = sep + QSVar + "=";
            RemoveQSVar(ref strUrl, posQ, token, sep, sep.Length);
            token = text2 + QSVar + "=";
            RemoveQSVar(ref strUrl, posQ, token, sep, text2.Length);
            sep = HttpUtility.UrlEncode("&");
            text2 = HttpUtility.UrlEncode("?");
            token = sep + HttpUtility.UrlEncode(QSVar + "=");
            RemoveQSVar(ref strUrl, posQ, token, sep, sep.Length);
            token = text2 + HttpUtility.UrlEncode(QSVar + "=");
            RemoveQSVar(ref strUrl, posQ, token, sep, text2.Length);
        }
        return strUrl;

      

  4.   

    .net类库中为什么没有提供这样的方法