首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

比较好的动态获取url参数的方案?

2013-09-05 
求一个比较好的动态获取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);

[解决办法]
引用:
http://www.*****.aspx?pram1=12&amp;pram2=中文&amp;pram3=类型&amp;pram4=哈哈
将红色部分截取下来str=url.Substring(url.IndexOf('?')+1);


C# code

string commandText = "select * from TableName where 1=1";
string……

很容易注入
[解决办法]
引用:
描述:前台以get方式提交,url带的参数不定!后台需要动态获取参数拼接SQL语句。
例如:http://www.*****.aspx?pram1=12&amp;pram2=中文&amp;pram3=类型&amp;pram4=哈哈
注意,上面的参数有可能只有两个、一个也可以没有,参数的类型有int和string

后台有什么好的方法动态拼接没有???
求解

拼接出来的sql语句,例……


获取url参数就是使用 Request.QueryString[name]来获取。当它返回null值则表示没有这个参数。参数一律都是string,你需要自己转换为数据真正的强类型。对于string类型的值,当拼接到sql字符串时,需要处理参数值中的单引号(而不是简单地拼接到字符串)。
[解决办法]
引用:
你获取的时候判断是否为空。

Request.QueryString["a"]=null?"":Request.QueryString["a"];
这样来判断。

然后过滤下 拼接就行了

Request.QueryString.Count 获取参数个数 在进一步判断

+1
[解决办法]
直接全部参数用一个连接符号拼接在一起~接收页面再spilce~~

不过要注意防注入~

热点排行