我是使用VB语言编写的ASP.NET,由于是刚接触BS模式编程,也不是专业程序员,所以碰到了一点变量作用域的问题,特来向各位请教一下。下面是我的问题代码:Public Class test1
Inherits System.Web.UI.Page Dim test As String
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not Page.IsPostBack Then
test = "13"
End If
End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = test
End Sub
End Class按照我自己的理解,在点击Button1按钮后,TextBox1里面就应该显示变量test的值“13”,可是结果却什么也没有显示。但我明明在Page_load里面对test变量进行了赋值的啊,这是为什么?
Inherits System.Web.UI.Page Dim test As String
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not Page.IsPostBack Then
test = "13"
End If
End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = test
End Sub
End Class按照我自己的理解,在点击Button1按钮后,TextBox1里面就应该显示变量test的值“13”,可是结果却什么也没有显示。但我明明在Page_load里面对test变量进行了赋值的啊,这是为什么?
If Not Page.IsPostBack Then
test = "13 "
End If
这里的代码。当点击按钮回传的时候,页面类重新生成。这时候不会去执行
If Not Page.IsPostBack Then //这语句只在第一次载入的时候执行
test = "13 "
End If
所以在按钮回传的进修,字段test没有被初始化。在按钮事件里,当然TextBox1的值就没有了
楼主可以这样改:
If Not Page.IsPostBack Then
test = "13 "
End If
====>改成
test = "13"; //这样每次页面载入的时候,都会在Page_Load处理事件里初始化
因为按钮触发时要刷新页面
把If Not Page.IsPostBack Then
这句去掉就可以了