URL伪静态多个不确定参数如何处理 url 可能 为/men.html?P1=2&P2=3&P4=1&P3=5/men.html?P2=6&P3=7/men.html?P1=8/men.html?P4=9&P5=12参数个数和参数名称都不确定 如何做URL 重写 url 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 什么情况?你先得搞清它对这些参数处理逻辑,才好url重写 只将men.html重定向为men.aspx就行那些不确定参数在pageload里取就行 foreach (var t in Request.QueryString) { if (t != null && t.ToString().Trim() != "") { Response.Write(t.ToString() + ":" + Request.QueryString[t.ToString()].Trim()); } } /men.html?P1=2&P2=3&P4=1&P3=5/men.html?P2=6&P3=7/men.html?P1=8/men.html?P4=9&P5=12现在不用上面这种形式了 html后面不能再带参数 Request.QueryString就是传过来所有的参数连接在一起的串,你重定向时,把Request.QueryString加到你重定下地址后面就可以了 不是 我现在前台链接不能以/men.html?P1=2&P2=3&P4=1&P3=5 这种形式显示这个重写 已经搞定了假如说我现在前台链接改成/men/p1/2/p2/3/p4/1/p3/5.html或者/men/p1_2_p2_3_p4_1_p3_3.html这个 我的重写规则要怎么写 应为这个参数名称p1 都是不确定的 参数个数也不确定 那你从 p1 取到 p100好了没有的自然 就 nothing了P1=&P2=3&P4=&P3=5 这取决你用什么样的URL重写方式 /// <summary> /// 构建Request.QueryString /// </summary> /// <returns></returns> public string GetRequestQuery() { int queCout = Request.QueryString.Count; System.Text.StringBuilder strbu = new System.Text.StringBuilder(""); //去掉第一个参数 for (int i = 0; i < queCout; i++) { if (Request.QueryString.Keys[i] != null) { strbu.Append(Request.QueryString.Keys[i].ToString() + "=" + Request.QueryString[i].ToString()); strbu.Append(i != queCout - 1 ? "&" : ""); } } return strbu.ToString(); } 我都是以f0-fn的方式来解析伪静态页面的。比如像你这样的页面men.html?P1=2&P2=3&P4=1&P3=5/men.html?P2=6&P3=7/men.html?P1=8/men.html?P4=9&P5=12那就要每次都传五个参数。其中不需要的参数可以传无效的参数。如0,调整后为men.html?P1=2&P2=3&P3=5&P4=1&P5=0 /men.html?P1=0&P2=6&P3=7&P4=0&P5=0 /men.html?P1=8&P2=0&P3=0&P4=0&P5=0 /men.html?P1=0&P2=0&P3=0&P4=9&P5=12 +++LZ,你这个设计不科学如果参数个数不确定但是用途都一样的完全可以拼接字符串再传出来比如html?p=1,2,3,4,5&xx=test这样就好些多了在url重写的时候也可以根据你的规则来写匹配 可以考虑通过代码来实现这种特殊的rewrite 鼠标移到指定文本框,怎么实现,javascript 关于页面刷新次数增加的问题 用ext.form和ext.grid的思路实现查询? 两个web网站怎么公用同一个身份验证 [分享]一个在线用户列表的解决方案(解决用户意外退出在线列表无法及时更新问题) 顺便散分 ~~ 急求 webService 都可以返回那种类型 高手们啊,帮帮俺吧--Web控件编写 求教数据插入出错的问题 哪位大侠知道,asp.net mvc 下,如何实现验证码功能,哪位大哥能给出详细代码 请教如何在freetextbox中上传其他非图片类型的文件,并能显示出链接用于下载 诡异功能求助 获取客户端IP地址
你先得搞清它对这些参数处理逻辑,才好url重写
那些不确定参数在pageload里取就行
foreach (var t in Request.QueryString)
{
if (t != null && t.ToString().Trim() != "")
{
Response.Write(t.ToString() + ":" + Request.QueryString[t.ToString()].Trim());
}
}
/men.html?P2=6&P3=7
/men.html?P1=8
/men.html?P4=9&P5=12现在不用上面这种形式了 html后面不能再带参数
这个重写 已经搞定了假如说我现在前台链接改成
/men/p1/2/p2/3/p4/1/p3/5.html
或者/men/p1_2_p2_3_p4_1_p3_3.html
这个 我的重写规则要怎么写 应为这个参数名称p1 都是不确定的 参数个数也不确定
/// 构建Request.QueryString
/// </summary>
/// <returns></returns>
public string GetRequestQuery()
{
int queCout = Request.QueryString.Count;
System.Text.StringBuilder strbu = new System.Text.StringBuilder("");
//去掉第一个参数
for (int i = 0; i < queCout; i++)
{
if (Request.QueryString.Keys[i] != null)
{
strbu.Append(Request.QueryString.Keys[i].ToString() + "=" + Request.QueryString[i].ToString());
strbu.Append(i != queCout - 1 ? "&" : "");
}
}
return strbu.ToString();
}
比如像你这样的页面
men.html?P1=2&P2=3&P4=1&P3=5
/men.html?P2=6&P3=7
/men.html?P1=8
/men.html?P4=9&P5=12
那就要每次都传五个参数。其中不需要的参数可以传无效的参数。如0,调整后为
men.html?P1=2&P2=3&P3=5&P4=1&P5=0
/men.html?P1=0&P2=6&P3=7&P4=0&P5=0
/men.html?P1=8&P2=0&P3=0&P4=0&P5=0
/men.html?P1=0&P2=0&P3=0&P4=9&P5=12
+++
LZ,你这个设计不科学如果参数个数不确定但是用途都一样的完全可以拼接字符串再传出来
比如html?p=1,2,3,4,5&xx=test
这样就好些多了
在url重写的时候也可以根据你的规则来写匹配