问题描述:一个页面三次加载(自己向自己提交),在记录用户操作的时候,出现了问题。
页面执行的步骤是这样的,我要的效果是能将三个参数都保存下来,然后传递到另一个页面。
【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();//初始化数据
}
//点击类型,记录用户指令
【1】int typeid = WCommon.Queryintzero("type");
ViewState["typeid"] = typeid;
if (typeid != 0)
{
btnSecond.Visible = true;
hidselectTypeId.Value = typeid.ToString();
MultiView1.ActiveViewIndex = 1;
HouseCityData();//加载区域,提供用户选择
//点击城区,记录用户指令
}
【2】int cityid = WCommon.Queryintzero("city");
ViewState["cityid"] = cityid;
if (cityid != 0)
{
btnThird.Visible = true;
hidselectCityId.Value = cityid.ToString();//保存用户选择的城区
HouseRoadData(cityid);//加载城区
MultiView1.ActiveViewIndex = 2;
}
//点击街道,记录用户指令
【3】int 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);
}
为什么不这样?
【1】temp.aspx?city=1
【2】temp.aspx?city=1&area=2
【3】temp.aspx?city=1&area=2&road=3
虽然多次加载有点怪,那你再放2个hidden好了
有确不行的,你可以用cookie或session记录起来,第一次起个名叫city,第二次再叫一个area第三次叫road,你不是第三次走完转到其它页面吗?
感觉还是downmoon的方法最好,我就不明白?为什么URL参数多不好实现..
这样行不? 每次请求的时候,把之前的参数累积存在ViewState里面
【1】ViewState["AreaParam"] = "1"
【2】ViewState["AreaParam"] = "1,2"
【3】ViewState["AreaParam"] = "1,2,3"
Response.Redirect("pubhouse.aspx?type=" + WCommon.Queryintzero("type"));
同意邀月的
地址跳转了基本不可能做到保存前一个页面的状态
用session cookie 之内的显然不合适
楼主好像混淆了2几个问题
第一个问题就是传值问题
post传值和get传值
建议你要么用post要么用get
一般来说get传值是没法保证上一个页面的状态的
除非你把上一个页面的状态值全部都重传一遍,不过这个受字符串的限制
而你这个如果是在当前页面的传递的话
很明显能用post传值
你可以用Session保存你要的状态呀
由于时间忙,没太明白你要的效果
不过我认为,有两种思路供你参考
1. 用Session保存页面要的那种效果,不用挑来跳去的
2.传值得时候可以传数组呀,表示状态及你要的数字