Application问题

圣诞老人123 2008-03-29 09:22:19
页面代码:

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Application.Lock();
Application["Point"] = (int)Application["Point"] + 1;
Application.UnLock();
}
Response.Write("点击率为:" + Application["Point"]);
}
}


全局文件中代码


void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
//Application["Point"] = 0;

}




为什么我点击页面刷新计数器一直累加???
不是if (!IsPostBack)中只执行一次?就是页面加载时

那不是矛盾了吗??
...全文
73 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
1楼对.net的机制了解得非常透彻啊.完全正确.
ljm66 2008-03-30
  • 打赏
  • 举报
回复
用SESSION就可以了,不用这么麻烦的吧
wh110 2008-03-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 truelove12 的回复:]
1楼对.net的机制了解得非常透彻啊.完全正确.
[/Quote]

建议还是使用SESSION
changjiangzhibin 2008-03-30
  • 打赏
  • 举报
回复
统计流量一般是将数据写入数据库中,(登录成功就累计加一)
hanjiaming2008 2008-03-30
  • 打赏
  • 举报
回复
postback是和服务器进行数据交换及信任关系的确认,而刷新是页面进行重新加载。。。
所以刷新相当于第一次执行,而如果你点击了按钮提交了,和服务器进行了通信,那就有了postback这样postback就为true, if (!IsPostBack) 就不会执行了。
jzywh 2008-03-30
  • 打赏
  • 举报
回复
你刷新页面确实不是PostBack嘛
hj3793 2008-03-29
  • 打赏
  • 举报
回复
页面刷新是会执行 if (!IsPostBack) 里面的事件的.所以一直在累加.

如果要刷新不累加,则可以将状态保存在 cookies 或者 session 里

不要学我发那么多帖啊...
datahandler2 2008-03-29
  • 打赏
  • 举报
回复
另外给你补充个建议。做计数器不是这样做的。合理点要在session_start和session_end中计数才准确
datahandler2 2008-03-29
  • 打赏
  • 举报
回复
首先你要理解好ispostback 和页面刷新原理和不同。ispostback我举个例子,比如你一个页面上有一个可回传的按钮,你点击这个按钮的时候会触发一个isposkback,而刷新则相当于一个页面重写加载执行,就不是什么ispostback了。为什么数据仍会累加就是这个意思。另外由于application_start起源于你的最开始应用程序。在application_end前,application的值一般是不会变成0的

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧