{
System.Web.HttpContext context = System.Web.HttpContext.Current;
Guid tempShoppingCartId = Guid.NewGuid();
context.Response.Cookies["tempCartid"].Value = tempShoppingCartId.ToString();
return tempShoppingCartId.ToString();
}这个是产生随即id的方法
在首页调用时代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack==false)
{ ShopCart shopcart = new ShopCart();
string tempShopID = shopcart.GetShoppingCartId();
Session["TShopID"] = tempShopID;
Response.Write(tempShopID);
}}
不知道为什么每次刷新都会调用方法,是产生的id不断变化……
22 个解决方案
#1
Guid.NewGuid() 看名字也知道创建了个新的GUID GUID不重复..所以一直变..
生成好GUID就不要再生成GUID了.
生成好GUID就不要再生成GUID了.
#2
?什么意思啊?我把他放在isPostBack里面了啊,理论上应该调用一次啊
#3
你的问题不是为什么GUID不段变化的问题,而是为什么总刷新后调用GetShoppingCartId()的问题...
if(IsPostBack)
{
......
}
if(IsPostBack)
{
......
}
#4
F10,跟进去单步看一下...
#5
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ ShopCart shopcart = new ShopCart();
string tempShopID = shopcart.GetShoppingCartId();
Session["TShopID"] = tempShopID;
Response.Write(tempShopID);
}}
#6
zheyang和我的效果一样啊
#7
if(IsPostBack)
这样的话就没有效果啊,打印都打印不出来
这样的话就没有效果啊,打印都打印不出来
#8
我的意思是你跟进去看看这个块里的代码...不是这样写.这样写肯定错的..
#9
跟进去看什么啊,他在pageload里面写得,直接就执行了,看不出什么,
#10
哦 看到了!ispostback这样是每次刷新都执行了
#11
F9,F10....UP!!!!!!
#12
不过这样if(IsPostBack)
{
......
}的话if里面的代码就没有执行
{
......
}的话if里面的代码就没有执行
#13
那是当然的了IsPostBack是判断是否是页面提交,
手工刷新页面和手工刷新页面都会出发Page_Load,
如果要防止每次刷新执行,而只需在提交后执行就要用
if (IsPostBack) // 如果是提交页面
{
... // 不submit的话,自然是不执行了
}
else // 手动刷新页面
{
...
}
#14
一句话更正
页面提交和手工刷新页面都会出发Page_Load,
页面提交和手工刷新页面都会出发Page_Load,
#15
因为ispostback是判断是否有事件回发,而楼主每次点击刷新的时候正好符合了if (IsPostBack==false) 的条件,所以每次刷新都会执行GetShoppingCartId这个方法。楼主可以做个小测试了解下ispostback的作用。
#16
哦这样啊但是我想一打开页面就产生个id而且不会因刷新而变化,我该怎么办啊
#17
如果你只想让ID不变化..其实有办法..
第一次进去的时候把生成出来的GUID 放到一个 Session或者是临时变量里...
当然首先这个Session 或者临时变量为空的..
然后再进去的时候if 一下Session或者临时变量..
如果不为空,就拿Session里面的值做你接下来的操作就行了..
第一次进去的时候把生成出来的GUID 放到一个 Session或者是临时变量里...
当然首先这个Session 或者临时变量为空的..
然后再进去的时候if 一下Session或者临时变量..
如果不为空,就拿Session里面的值做你接下来的操作就行了..
#18
定义一个公共变量
bool GotID=false;
if (IsPostBack&&!GotID)
{
...
GotID=true;
}
bool GotID=false;
if (IsPostBack&&!GotID)
{
...
GotID=true;
}
#19
额。。。。winform写多了。。。
GetID要放在Session里
Session[GotID]=false;
if (Session[GotID]==null||!Session[GotID])
{
getid();
Session[GotID]=true;
}
GetID要放在Session里
Session[GotID]=false;
if (Session[GotID]==null||!Session[GotID])
{
getid();
Session[GotID]=true;
}
#20
按你这样写确实是好些了,就是跳到其他的页面再回来,那个id不会刷新了,就是如果手动刷新的话第一次不会变化,但之后那个数就会变化
#21
有些小奇怪啊
#22
哦哦 是手动点刷新就变化 跳转再回来没事
#1
Guid.NewGuid() 看名字也知道创建了个新的GUID GUID不重复..所以一直变..
生成好GUID就不要再生成GUID了.
生成好GUID就不要再生成GUID了.
#2
?什么意思啊?我把他放在isPostBack里面了啊,理论上应该调用一次啊
#3
你的问题不是为什么GUID不段变化的问题,而是为什么总刷新后调用GetShoppingCartId()的问题...
if(IsPostBack)
{
......
}
if(IsPostBack)
{
......
}
#4
F10,跟进去单步看一下...
#5
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ ShopCart shopcart = new ShopCart();
string tempShopID = shopcart.GetShoppingCartId();
Session["TShopID"] = tempShopID;
Response.Write(tempShopID);
}}
#6
zheyang和我的效果一样啊
#7
if(IsPostBack)
这样的话就没有效果啊,打印都打印不出来
这样的话就没有效果啊,打印都打印不出来
#8
我的意思是你跟进去看看这个块里的代码...不是这样写.这样写肯定错的..
#9
跟进去看什么啊,他在pageload里面写得,直接就执行了,看不出什么,
#10
哦 看到了!ispostback这样是每次刷新都执行了
#11
F9,F10....UP!!!!!!
#12
不过这样if(IsPostBack)
{
......
}的话if里面的代码就没有执行
{
......
}的话if里面的代码就没有执行
#13
那是当然的了IsPostBack是判断是否是页面提交,
手工刷新页面和手工刷新页面都会出发Page_Load,
如果要防止每次刷新执行,而只需在提交后执行就要用
if (IsPostBack) // 如果是提交页面
{
... // 不submit的话,自然是不执行了
}
else // 手动刷新页面
{
...
}
#14
一句话更正
页面提交和手工刷新页面都会出发Page_Load,
页面提交和手工刷新页面都会出发Page_Load,
#15
因为ispostback是判断是否有事件回发,而楼主每次点击刷新的时候正好符合了if (IsPostBack==false) 的条件,所以每次刷新都会执行GetShoppingCartId这个方法。楼主可以做个小测试了解下ispostback的作用。
#16
哦这样啊但是我想一打开页面就产生个id而且不会因刷新而变化,我该怎么办啊
#17
如果你只想让ID不变化..其实有办法..
第一次进去的时候把生成出来的GUID 放到一个 Session或者是临时变量里...
当然首先这个Session 或者临时变量为空的..
然后再进去的时候if 一下Session或者临时变量..
如果不为空,就拿Session里面的值做你接下来的操作就行了..
第一次进去的时候把生成出来的GUID 放到一个 Session或者是临时变量里...
当然首先这个Session 或者临时变量为空的..
然后再进去的时候if 一下Session或者临时变量..
如果不为空,就拿Session里面的值做你接下来的操作就行了..
#18
定义一个公共变量
bool GotID=false;
if (IsPostBack&&!GotID)
{
...
GotID=true;
}
bool GotID=false;
if (IsPostBack&&!GotID)
{
...
GotID=true;
}
#19
额。。。。winform写多了。。。
GetID要放在Session里
Session[GotID]=false;
if (Session[GotID]==null||!Session[GotID])
{
getid();
Session[GotID]=true;
}
GetID要放在Session里
Session[GotID]=false;
if (Session[GotID]==null||!Session[GotID])
{
getid();
Session[GotID]=true;
}
#20
按你这样写确实是好些了,就是跳到其他的页面再回来,那个id不会刷新了,就是如果手动刷新的话第一次不会变化,但之后那个数就会变化
#21
有些小奇怪啊
#22
哦哦 是手动点刷新就变化 跳转再回来没事