请大家帮助,一个关于session的生效期的问题,回答有分,在线等待

herony420 2003-09-29 01:34:16
我在一个页面(view.aspx)首先初始化session("test") = "9",然后用javascript调用ReturnContent = showModalDialog("ModifyScheme/SendSection.aspx","","dialogHeight:600px;dialogWidth:800px;edge:sunken;status:no;");

在SendSection.aspx页面中要传回一个不同于ReturnContent的值在session("test")里,当SendSection.aspx关闭时跟踪session("test") = "1380",值已经改变,但是页面一关闭回到view.aspx页中(在执行page_load时,page_load里面的代码还没有执行)session("test")并没有保持'1380',而是马上变回"9",时间已经非常紧急了,请大家帮忙,为什么这个session会自行变回原来的值
...全文
32 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
seesea125 2003-09-29
  • 打赏
  • 举报
回复
第一页面
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not Page.IsPostBack Then
Session("Scheme_select_cell_id") = "9" '将此session初始化(注:在sendsection.aspx传回的session在sendsection.aspx关闭后马上由1380变为刚初始化时的值,如果不初始化就变为0)

End If

End Sub
Public Sub btnclick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sc As String
sc = "<script>showModalDialog('SendSection.aspx','','dialogHeight:200px;dialogWidth:300px;edge:sunken;status:no;');</script>"
RegisterStartupScript("open", sc)
End Sub
Public Sub show(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Response.Write(Session("Scheme_select_cell_id"))
End Sub
第二页面
Public Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclose.Click
Session("Scheme_select_cell_id") = "1380" '需要的session,赋值后是1380
Response.Write("<script>window.close();</script>")
End Sub
herony420 2003-09-29
  • 打赏
  • 举报
回复
to chxzll(小气包) :
此时,在页面刚刚执行page_load(有断点),showContent还没有执行,所以不存在初始化的问题,谢谢你,chxzll
chxzll 2003-09-29
  • 打赏
  • 举报
回复
可是你在Page_Load事件里调用了ShowContent()啊,而ShowContent里重写了session啊
'If Not Page.IsPostBack Then

lblTitle.Text = sTitle
'打开数据库连接

'填写内容
ShowContent()
herony420 2003-09-29
  • 打赏
  • 举报
回复
痛苦,果然是模式窗口的问题,那我需要做的工作可就太多了,呜呜呜.......
谢谢各位,给分了!!
herony420 2003-09-29
  • 打赏
  • 举报
回复
to chxzll(小气包) :
session的改变是在page_load时发生的,还没有执行showContent()的初始化session的操作
谢谢你!

to seesea125(雨天) :
请稍等,我试一下,我也怀疑是模式窗口的问题,谢谢!!
seesea125 2003-09-29
  • 打赏
  • 举报
回复
'If Not Page.IsPostBack Then不能不要啊
seesea125 2003-09-29
  • 打赏
  • 举报
回复
说错了,SendSection.aspx里放iframe,然后再放你的内容
chxzll 2003-09-29
  • 打赏
  • 举报
回复
'If Not Page.IsPostBack Then
此句被注释掉了,所在在调用ShowContent()时
ShowContent()中将Session("Scheme_select_cell_id") = objReader("oper_section_id")初始化时,返回该页时,Page_Load事件又发生了,又执行了一句
Session("Scheme_select_cell_id") = objReader("oper_section_id")
seesea125 2003-09-29
  • 打赏
  • 举报
回复
可能问题出在showModalDialog的身上,你试着把SendSection.aspx放在iframe里或者window.open()方式打开页面
herony420 2003-09-29
  • 打赏
  • 举报
回复
view的page_load,我把If Not Page.IsPostBack 加上和不加一样的结果,SendSection.aspx是由js调用的模式对话框
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码=
strWebConn = "server=192.168.0.40;uid=sa;pwd=sa;database=KTCellSMWeb" '连接字符串
objConn = New SqlClient.SqlConnection(strWebConn)
objConn.Open()
If Request.QueryString("id") = "" Then Response.Redirect("error_client_login.aspx")
iSchemeID = CInt(Request.QueryString("id"))
sType = Request.QueryString("type")
sTitle = Request.QueryString("title")

'If Not Page.IsPostBack Then

lblTitle.Text = sTitle
'打开数据库连接

'填写内容
ShowContent()

'选择哪些内容可以显示
TypeSelect()

'为文本添加客户端脚本
AddScript()
'End If
End Sub

Private Sub ShowContent()

Dim strSql As String
Dim gc As New GroupConversion '取得群组的字符串

strSql = "select * from tb_Operation where oper_scheme_id = " & iSchemeID
objCmd = New SqlClient.SqlCommand(strSql, objConn)
objReader = objCmd.ExecuteReader()
If objReader.Read Then
txtSendCell.Text = gc.GetSectionName(objReader("oper_section_id")) '页面第一次加载时显示的内容
Session("Scheme_select_cell_id") = objReader("oper_section_id") '将此session初始化(注:在sendsection.aspx传回的session在sendsection.aspx关闭后马上由1380变为刚初始化时的值,如果不初始化就变为0)
objReader.Close()
objCmd.Dispose()
objConn.Close()
End Sub

下面是SendSection.aspx相关的内容,其中两个session是要传到view页中的
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
Dim CellContent() As String
Dim sScript As String

Session("Scheme_select_cell_id") = "" '初始化选择的小区ID
Session("Scheme_select_cell_name") = "" '初始化选择的小区的名字

If Trim(txtSendCell.Text) = "" Then
MsgBox("请您选择小区!!", False)
Exit Sub
End If

CellContent = Split(Trim(txtSendCell.Text), "-")
Session("Scheme_select_cell_id") = CellContent(0) '需要的session,赋值后是1380

sScript = "<script>window.close();</script>"
RegisterStartupScript("close", sScript)
End Sub

请大家指教
mzbyxz 2003-09-29
  • 打赏
  • 举报
回复
session("test") = "9",又被执行了一遍,相信计算机,如果你不执行,它不会随意改变值的

从显示模态窗口开始跟踪吧
adminlxj79 2003-09-29
  • 打赏
  • 举报
回复
freecs(^=^) 说的对,现在你应该可以有两种方案:1、继续使用Session的话就查看一下代码的逻辑。2、使用程序集DLL,做一个全局变量!
流梓 2003-09-29
  • 打赏
  • 举报
回复
在WebConfig中配置Session时间是多少呢?
树猫 2003-09-29
  • 打赏
  • 举报
回复
我想不会是 session的问题,而是你的代码逻辑问题。
当从SendSection.aspx回到view.aspx时,session("test") = "9"很可能又一次执行了。

你把代码贴出来看看
yj838317 2003-09-29
  • 打赏
  • 举报
回复
session只在同一页面中有效,页面一关闭就丢失了,建议在同一窗口中进行。
herony420 2003-09-29
  • 打赏
  • 举报
回复
请几位大侠帮帮忙,这个问题如果解决不了我就没法向下进行了...............
herony420 2003-09-29
  • 打赏
  • 举报
回复
大家帮帮我呀!!

62,025

社区成员

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

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

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

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