思路:
1.获取参数值
2.生成查询条件
3.获取查询结果
4.绑定查询选项(调用GetUrlHtml方法生成查询URL)
例如:var=y2013-pnvshihufu-qbeijing-sxuhuiqu
/// <summary>
/// 得到URL变量值
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
protected string GetUrlVal(string name)
{
string s = "-" + Request.QueryString["var"];
Regex reg = new Regex("-" + name + "([a-zA-Z0-9]+)");
Match match = reg.Match(s);
if (match.Success)
return match.Groups[1].Value;
else
return null;
}
/// <summary>
/// 根据变量类型和值生成新的URL(方法1,直接使用Replace方法)
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
protected string GetUrlHtml(string type, string val)
{
string url = string.Empty;
if (Request.QueryString["var"] != null)
{
string varStr = "-" + Request.QueryString["var"];
string oldvar = null;
string[] dels = { "g", "", "" };
switch (type)
{
case "q":
oldvar = parea;
dels[1] = "s";
break;
case "p":
oldvar = producttype;
break;
case "a":
oldvar = actiongtype;
break;
case "c":
oldvar = pctype;
break;
case "d":
oldvar = day;
dels[1] = "m";
dels[2] = "y";
break;
case "y":
oldvar = years;
dels[1] = "d";
dels[2] = "m";
break;
}
if (type != "g")
{
foreach (string del in dels)
{
if (varStr.IndexOf("-" + del) > -1 && type != del && del.Length > 0) //删除分页信息 g表示分页,newtype值中不得使用此标示
{
varStr = varStr.Replace("-" + del + GetUrlVal(del), "");
}
}
}
if (type == "g")
{
oldvar = GetUrlVal("g");
}
if (oldvar != null)
{
if (val.Length > 0)
{
varStr = varStr.Replace("-" + type + oldvar, "-" + type + val);
}
else
{
varStr = varStr.Replace("-" + type + oldvar, "");
}
}
else
{
if (val.Length > 0)
{
varStr = varStr + "-" + type + val;
}
}
url = varStr;
}
else
{
if (val.Length > 0)
{
url = "-" + type + val;
}
}
url = url.Length > 0 ? url.Substring(1) : url;
return url.Length > 0 ? ("/" + url) : url;
}
/// <summary>
/// 根据变量类型和值生成新的URL(方法2,使用正则表达式)
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
Regex regex;
protected string GetUrlHtml(string type, string val)
{
string url = string.Empty;
regex = new Regex("-" + type + "([a-zA-Z0-9]+)");
if (!string.IsNullOrEmpty(Request.QueryString["var"]))//参数不为空
{
string paras = "-" + Request.QueryString["var"];
if (regex.IsMatch(paras))//匹配
{
if (val != "")
{
url = regex.Replace(paras, "-" + type + val);//替换
}
else
{
url = regex.Replace(paras, "");//删除
}
}
else//不匹配
{
if (val != "")
{
url = paras + "-" + type + val;
}
else
{
url = paras;
}
}
}
else//参数为空
{
url = type + val;
}
string[] dels = { "g", "", "" };
if (type == "q")
dels[1] = "s";
if (type == "d")
{
dels[1] = "m";
dels[2] = "y";
}
if (type == "y")
{
dels[1] = "d";
dels[2] = "m";
}
if (type != "g")
{
foreach (var del in dels)
{
regex = new Regex("-" + del + "([a-zA-Z0-9]+)");
if (regex.IsMatch(url) && del.Length > 0) //删除分页信息 g表示分页,newtype值中不得使用此标示
{
url = regex.Replace(url, "");
}
}
}
if (url.Trim('-').Length > 0)
return "/" + url.Trim('-');
else
return "";
}
1.获取参数值
2.生成查询条件
3.获取查询结果
4.绑定查询选项(调用GetUrlHtml方法生成查询URL)
例如:var=y2013-pnvshihufu-qbeijing-sxuhuiqu
/// <summary>
/// 得到URL变量值
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
protected string GetUrlVal(string name)
{
string s = "-" + Request.QueryString["var"];
Regex reg = new Regex("-" + name + "([a-zA-Z0-9]+)");
Match match = reg.Match(s);
if (match.Success)
return match.Groups[1].Value;
else
return null;
}
/// <summary>
/// 根据变量类型和值生成新的URL(方法1,直接使用Replace方法)
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
protected string GetUrlHtml(string type, string val)
{
string url = string.Empty;
if (Request.QueryString["var"] != null)
{
string varStr = "-" + Request.QueryString["var"];
string oldvar = null;
string[] dels = { "g", "", "" };
switch (type)
{
case "q":
oldvar = parea;
dels[1] = "s";
break;
case "p":
oldvar = producttype;
break;
case "a":
oldvar = actiongtype;
break;
case "c":
oldvar = pctype;
break;
case "d":
oldvar = day;
dels[1] = "m";
dels[2] = "y";
break;
case "y":
oldvar = years;
dels[1] = "d";
dels[2] = "m";
break;
}
if (type != "g")
{
foreach (string del in dels)
{
if (varStr.IndexOf("-" + del) > -1 && type != del && del.Length > 0) //删除分页信息 g表示分页,newtype值中不得使用此标示
{
varStr = varStr.Replace("-" + del + GetUrlVal(del), "");
}
}
}
if (type == "g")
{
oldvar = GetUrlVal("g");
}
if (oldvar != null)
{
if (val.Length > 0)
{
varStr = varStr.Replace("-" + type + oldvar, "-" + type + val);
}
else
{
varStr = varStr.Replace("-" + type + oldvar, "");
}
}
else
{
if (val.Length > 0)
{
varStr = varStr + "-" + type + val;
}
}
url = varStr;
}
else
{
if (val.Length > 0)
{
url = "-" + type + val;
}
}
url = url.Length > 0 ? url.Substring(1) : url;
return url.Length > 0 ? ("/" + url) : url;
}
/// <summary>
/// 根据变量类型和值生成新的URL(方法2,使用正则表达式)
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
Regex regex;
protected string GetUrlHtml(string type, string val)
{
string url = string.Empty;
regex = new Regex("-" + type + "([a-zA-Z0-9]+)");
if (!string.IsNullOrEmpty(Request.QueryString["var"]))//参数不为空
{
string paras = "-" + Request.QueryString["var"];
if (regex.IsMatch(paras))//匹配
{
if (val != "")
{
url = regex.Replace(paras, "-" + type + val);//替换
}
else
{
url = regex.Replace(paras, "");//删除
}
}
else//不匹配
{
if (val != "")
{
url = paras + "-" + type + val;
}
else
{
url = paras;
}
}
}
else//参数为空
{
url = type + val;
}
string[] dels = { "g", "", "" };
if (type == "q")
dels[1] = "s";
if (type == "d")
{
dels[1] = "m";
dels[2] = "y";
}
if (type == "y")
{
dels[1] = "d";
dels[2] = "m";
}
if (type != "g")
{
foreach (var del in dels)
{
regex = new Regex("-" + del + "([a-zA-Z0-9]+)");
if (regex.IsMatch(url) && del.Length > 0) //删除分页信息 g表示分页,newtype值中不得使用此标示
{
url = regex.Replace(url, "");
}
}
}
if (url.Trim('-').Length > 0)
return "/" + url.Trim('-');
else
return "";
}