我有一个包含母版页的C#网站。因此,当用户首次打开网站时,我想运行一个脚本来告诉我用户所在的位置。然后我会将该信息写入隐藏字段,只要我需要引用该信息,我就会将其从这个隐藏字段中拉出来。
那么,我将把这个引用放在代码隐藏中,以便它只运行一次?我尝试将其放在if (!IsPostBack)
内的protected void master_Page_PreLoad(object sender, EventArgs e)
内,但这不起作用。
有什么建议吗?
答案 0 :(得分:1)
嗯,HiddenField不能满足您的要求。
我建议您先选择首选的持久性机制。这是一个很棒的MSDN页面,列出了ASP.NET中可用的所有持久性机制:
ASP.NET State Management Overview
这是所涵盖机制的清单:
其中,基于我对您的问题的了解,我建议您查看Cookie,会话状态或配置文件属性。这3种机制可跟踪每个用户的数据,并可在整个Web应用程序中保留。
阅读如何实施您选择的机制,尝试一些代码,如果您还有其他问题,请发布一个新问题。
答案 1 :(得分:0)
您可以在Global.asax页面
中的Session_Start方法中指定值void Session_Start(object sender, EventArgs e)
{
setValue();
}
protected void setValue(){
session["DefaultValue"]="test";
}
只有在为登录用户创建会话时,Session_Start方法才会执行一次,然后整个应用程序都可以访问存储在会话中的值。
答案 2 :(得分:0)
如果您从数据库访问数据,那么您可以在登录后检索数据并将其存储在会话中。
如果你使用谷歌地图访问数据,那么在主页面!Ispostback检查会话中的数据,如果没有找到,则从客户端页面运行脚本存储hiddenfield中的值。并且在回发后存储会话中隐藏字段的值,如果会话数据为空。