asp.net 后台传值,不用session,不用公共传值。 传一个字符串数组。
如题,急求,打开模式窗口,将数组strs传过去。后台,后台获取。。lblZCSum.Attributes.Add("onclick","window.showModele...
如题,急求,打开模式窗口,将数组strs传过去。后台,后台获取。。
lblZCSum.Attributes.Add("onclick", "window.showModelessDialog('ShowSum.aspx?id=1&&str=','','scroll:0;location:no;frameborder:no;dialogWidth:1280px;dialogHeight:600px;')")
= = 不要误会,代码只是表示需求页面的形式,需要传值的是string[] strs; 展开
lblZCSum.Attributes.Add("onclick", "window.showModelessDialog('ShowSum.aspx?id=1&&str=','','scroll:0;location:no;frameborder:no;dialogWidth:1280px;dialogHeight:600px;')")
= = 不要误会,代码只是表示需求页面的形式,需要传值的是string[] strs; 展开
3个回答
展开全部
如果这个数组实在太过庞大超过了querystring能允许的范围,那么恐怕就要靠文件或者内存里面开个缓存来传递了。
比如A.aspx 传递到 B.aspx
a.aspx 里面生成一个 GUID, 用这个guid作为文件名,生成包含你的数组的文件,然后把 GUID传给B。B再用这个guid去取读入文件,解析出数组。再把文件删掉。
另外一种是做一个静态哈希表,A.aspx里面用GUID作为key把数组存进去,把 GUID传给B,b.aspx 用guid去取这个数组,之后删掉。这种做法还需要有个扫描线程,扫描哈希表里存在了一段时间的数组,然后自动删除, 防止B.aspx没能正确运行造成内存越占越多。
我比较倾向使用 第二种方法,因为不论你用什么方法传递,这个数组都要进入内存,用其他办法传递的,要把数组变成文件也好,字符串也好,最后还要在变回来,效率肯定不如直接在内存里传递的。不过就是要做好回收工作。
比如A.aspx 传递到 B.aspx
a.aspx 里面生成一个 GUID, 用这个guid作为文件名,生成包含你的数组的文件,然后把 GUID传给B。B再用这个guid去取读入文件,解析出数组。再把文件删掉。
另外一种是做一个静态哈希表,A.aspx里面用GUID作为key把数组存进去,把 GUID传给B,b.aspx 用guid去取这个数组,之后删掉。这种做法还需要有个扫描线程,扫描哈希表里存在了一段时间的数组,然后自动删除, 防止B.aspx没能正确运行造成内存越占越多。
我比较倾向使用 第二种方法,因为不论你用什么方法传递,这个数组都要进入内存,用其他办法传递的,要把数组变成文件也好,字符串也好,最后还要在变回来,效率肯定不如直接在内存里传递的。不过就是要做好回收工作。
展开全部
你是想把一个字符串数组整合成一个字符串传过去吧
你不妨试试这样做
string[] strs=new str[100]; //你要传的字符串数组
char key = '#'; //一个你的字符串数组不会出现的字符作为连接字
StringBuilder sb=new StringBuilder();
foreach(string str in strs)
{
sb.Append(str);
sb.Append(key.ToString());
}
return sb.ToString(); //传递字符串
获取时把它拆开就行了
string str = Request.QueryString["str"].ToString();
char key = '#'; //前面设的连接字
string[] strs=str.Split(key); //得到数组
你不妨试试这样做
string[] strs=new str[100]; //你要传的字符串数组
char key = '#'; //一个你的字符串数组不会出现的字符作为连接字
StringBuilder sb=new StringBuilder();
foreach(string str in strs)
{
sb.Append(str);
sb.Append(key.ToString());
}
return sb.ToString(); //传递字符串
获取时把它拆开就行了
string str = Request.QueryString["str"].ToString();
char key = '#'; //前面设的连接字
string[] strs=str.Split(key); //得到数组
更多追问追答
追问
要考虑url传值的字符串最大长度哦,就是因为太长才求教其它方式。
追答
太长的话你就不能用get模式吧,
其实用Session的话应该没问题的,你是怕损耗效率吧
.net实现页面间传值的方法主要就是querystring、session、cookie、application
如果要传递的数据太多的话,不妨换个思路,
比如先存在某个文件里(如xml),再在另外一个页面读出来
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在后台接收是Request.QueryString["str"].ToString();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询