我该把只运行一次的东西放在哪里呢

本文关键字:一次 在哪里 运行 | 更新日期: 2023-09-27 18:14:54

我有一个c#网站,其中包括一个主页。因此,当用户第一次打开站点时,我想运行一个脚本,告诉我用户的居住地。然后我将该信息写入一个隐藏字段,任何时候我需要引用该信息,我将从这个隐藏字段中提取它。

那么,我应该把这个引用放在代码后面的哪里,使它只运行一次?我试着把它放在protected void master_Page_PreLoad(object sender, EventArgs e)里面的if (!IsPostBack),没有工作。

有什么建议吗?

我该把只运行一次的东西放在哪里呢

好吧,HiddenField不能满足你的要求。

我建议您首先选择您喜欢的持久性机制。这是一个很棒的MSDN页面,它列出了ASP中可用的所有持久性机制。净:

ASP。. NET状态管理概述

这是一个涵盖机制的列表:

    viewstate
  • 控件状态
  • 隐藏字段
  • 列表项
  • <
  • 饼干/strong>
  • 查询字符串
  • 应用程序状态
  • 会话状态
  • 配置文件属性
其中,根据我对你的问题的了解,我建议查看cookie、会话状态或配置文件属性。这3种机制跟踪每个用户的数据,并可以在整个web应用程序中持久化。

仔细阅读如何实现您选择的机制,尝试一些代码,如果您有进一步的问题,请发布新的问题。

可以在Global的Session_Start方法中指定值。asax页

void Session_Start(object sender, EventArgs e)
{
   setValue();
}
protected void setValue(){
  session["DefaultValue"]="test";
}

Session_Start方法将只在为登录用户创建会话时执行一次,然后存储在会话中的值将在整个应用程序中访问。

如果你从数据库访问数据,那么你可以在登录后检索数据并将其存储在会话中。

如果你使用Google map访问数据,那么在Master page !Ispostback检查会话中的数据,如果没有找到,那么从客户端页面运行脚本将值存储在hiddenfield中。如果session data为null,则在回发后将hidden field的值存储在session中。