比较好的动态获取url参数的方案?
求一个比较好的动态获取url参数的方案???描述:前台以get方式提交,url带的参数不定!后台需要动态获取参数拼
求一个比较好的动态获取url参数的方案???
描述:前台以get方式提交,url带的参数不定!后台需要动态获取参数拼接SQL语句。
例如:http://www.*****.aspx?pram1=12&pram2=中文&pram3=类型&pram4=哈哈
注意,上面的参数有可能只有两个、一个也可以没有,参数的类型有int和string
后台有什么好的方法动态拼接没有???
求解
拼接出来的sql语句,例
string strSql = "select col1,col2,col3 from t_name where pram1=1 and pram2=中文 and pram3=类型 and pram4=哈哈";
[解决办法]你获取的时候判断是否为空。
Request.QueryString["a"]=null?"":Request.QueryString["a"];
这样来判断。
然后过滤下 拼接就行了
Request.QueryString.Count 获取参数个数 在进一步判断
[解决办法]这样不好。。用参数化吧
[解决办法]遍历所有 QueryString
foreach (string str in Request.QueryString.Keys)
{
switch (str)
{
case "pram1":
break;
.......
}
}
------解决方案--------------------
JSON字串传递,后台直接parse到查询条件对象中去。
[解决办法]在sql文最后加上"where 1=1"然后就挨个判断拼接。
string strSql = "select .... from where 1=1";
if (a不为空)
+= "and A=a";
if (b不为空)
+= "and B=b";
if (c不为空)
+= "and C=c";
[解决办法]Request.QueryString.Keys
得到参数数组,你就可以再分析,再继续下一步了
[解决办法]http://www.*****.aspx?pram1=12&pram2=中文&pram3=类型&pram4=哈哈
将红色部分截取下来str=url.Substring(url.IndexOf('?')+1);
string commandText = "select * from TableName where 1=1";
string[] arrStr = str.Split('&');
for (int i = 0; i < arrStr.Length; i++)
{
commandText = commandText + " and " + arrStr[i];
}
Response.Write(commandText);
[解决办法]很容易注入
[解决办法]获取url参数就是使用 Request.QueryString[name]来获取。当它返回null值则表示没有这个参数。参数一律都是string,你需要自己转换为数据真正的强类型。对于string类型的值,当拼接到sql字符串时,需要处理参数值中的单引号(而不是简单地拼接到字符串)。
[解决办法]+1
[解决办法]直接全部参数用一个连接符号拼接在一起~接收页面再spilce~~
不过要注意防注入~