首页 新闻 会员 周边

页面多次加载,如何保存参数,(用户的的输入或者指令)?在线等,先行谢过!

0
悬赏园豆:30 [已解决问题] 解决于 2009-09-19 13:28

问题描述:一个页面三次加载(自己向自己提交),在记录用户操作的时候,出现了问题。

页面执行的步骤是这样的,我要的效果是能将三个参数都保存下来,然后传递到另一个页面。

【0】temp.aspx

【1】temp.aspx?city=1

【2】temp.aspx?area=2

【3】temp.aspx?road=3

初始化时候,提供用户选择的数据

【1】用户选择city为1,利用hidden保存到客户端

【2】用户选择area为2,同样保持到客户端,这个时候没有传值city,则

int typeid = WCommon.Queryintzero("type");(获取url参数为type的值,不存在则为0)结果为0了,这样就只能得到area的值

【3】重复第二步的错误了,只得到road=3

 

if (!IsPostBack)
{
HouseTypeData();
//初始化数据
}
//点击类型,记录用户指令
1int typeid = WCommon.Queryintzero("type");
ViewState[
"typeid"] = typeid;
if (typeid != 0)
{
btnSecond.Visible
= true;
hidselectTypeId.Value
= typeid.ToString();
MultiView1.ActiveViewIndex
= 1;
HouseCityData();
//加载区域,提供用户选择
//点击城区,记录用户指令
}
2int cityid = WCommon.Queryintzero("city");
ViewState[
"cityid"] = cityid;
if (cityid != 0)
{
btnThird.Visible
= true;
hidselectCityId.Value
= cityid.ToString();//保存用户选择的城区
HouseRoadData(cityid);//加载城区
MultiView1.ActiveViewIndex = 2;
}
//点击街道,记录用户指令
3int road = WCommon.Queryintzero("road");
if (road != 0)
{
btnFourth.Visible
= true;
hidselectRoadId.Value
= road.ToString();//保存用户选择的街道
Response.Redirect("pubhouse.aspx?type=" + ViewState["typeid"].ToString() + "&city=" + ViewState["cityid"].ToString() + "&road=" + road);
}

        
问题补充: 谢谢大家的帮忙,问题还没有解决 现在优化到这个程度了。 ViewState既然是在同一个页面内保存数据,那我在向页面提供数据的时候保存一个viewstate。 #小眼睛老鼠 我不是向第二个页面传值 #Cheese 我正在优化 #FengLang 谢谢了,就是这个ViewState,还有我的WCommon.Queryintzero如果为空,返回0的方法有点问题 #邀月 url是动态拼接的,假定可以传三个参数,那么,param1能获取到了,就不需要再传递给自己了,只需要保存就可以了。 temp.aspx页面向hander页面提供三个参数。 问题还没有解决。。。 ===================================== 分开成三个页面吧。 按照邀月的方法来。 ===================================== 问题解决了 <script language="javascript" type="text/javascript"> var param1; var param2; function selectthis(id) { var hid_type = document.getElementById("hid_type"); hid_type.value = id; param1 = id; ShowAreaData(); } function step2(id) { var hid_area = document.getElementById("hid_area"); hid_area.value = id; param2 = id; ShowRoadData(); } function selectjiedao(id) { var url = "pubhouse.aspx?type="+param1+"&area="+param2+"&road="+id; window.location.href=url; } </script>
21天后的主页 21天后 | 初学一级 | 园豆:3
提问于:2009-09-18 01:20
< >
分享
最佳答案
0

为什么不这样?

【1】temp.aspx?city=1

【2】temp.aspx?city=1&area=2

【3】temp.aspx?city=1&area=2&road=3

收获园豆:5
邀月 | 高人七级 |园豆:25475 | 2009-09-18 08:25
其他回答(6)
0

虽然多次加载有点怪,那你再放2个hidden好了

收获园豆:5
zjy | 园豆:3194 (老鸟四级) | 2009-09-18 06:20
0

有确不行的,你可以用cookie或session记录起来,第一次起个名叫city,第二次再叫一个area第三次叫road,你不是第三次走完转到其它页面吗?

感觉还是downmoon的方法最好,我就不明白?为什么URL参数多不好实现..

收获园豆:5
风浪 | 园豆:2996 (老鸟四级) | 2009-09-18 09:46
0

这样行不? 每次请求的时候,把之前的参数累积存在ViewState里面

【1】ViewState["AreaParam"] = "1"

【2】ViewState["AreaParam"] = "1,2"

【3】ViewState["AreaParam"] = "1,2,3"

 

收获园豆:5
Cheese | 园豆:509 (小虾三级) | 2009-09-18 13:13
0

Response.Redirect("pubhouse.aspx?type=" + WCommon.Queryintzero("type"));

Mr雨 | 园豆:1199 (小虾三级) | 2009-09-18 13:24
0

同意邀月的

地址跳转了基本不可能做到保存前一个页面的状态

用session cookie 之内的显然不合适

 

楼主好像混淆了2几个问题

第一个问题就是传值问题

post传值和get传值

建议你要么用post要么用get

一般来说get传值是没法保证上一个页面的状态的

除非你把上一个页面的状态值全部都重传一遍,不过这个受字符串的限制

而你这个如果是在当前页面的传递的话

很明显能用post传值

收获园豆:5
小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2009-09-18 13:38
0

你可以用Session保存你要的状态呀

由于时间忙,没太明白你要的效果

不过我认为,有两种思路供你参考

1. 用Session保存页面要的那种效果,不用挑来跳去的

2.传值得时候可以传数组呀,表示状态及你要的数字

收获园豆:5
多看看就明白了 | 园豆:210 (菜鸟二级) | 2009-09-18 14:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册