Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 公共变量不';行不通_Asp.net_Vb.net - Fatal编程技术网

Asp.net 公共变量不';行不通

Asp.net 公共变量不';行不通,asp.net,vb.net,Asp.net,Vb.net,这是我的aspx背后的示例代码。它一直显示0而不是2。我的代码与这个示例代码的唯一区别是button2位于模式对话框中。但是当我尝试使用这个简单的代码时,它仍然不起作用。。我做错什么了吗?在我看来,您不需要一个公共变量,所以将范围限制到所需的最低限度。您可以使用如下属性: Public Class sample Public inta As Integer Protected Sub button1(sender As Object, e As EventArgs) inta =

这是我的aspx背后的示例代码。它一直显示0而不是2。我的代码与这个示例代码的唯一区别是button2位于模式对话框中。但是当我尝试使用这个简单的代码时,它仍然不起作用。。我做错什么了吗?

在我看来,您不需要一个公共变量,所以将范围限制到所需的最低限度。您可以使用如下属性:

Public Class sample
  Public inta As Integer
  Protected Sub button1(sender As Object, e As EventArgs)
    inta = "2"
  End Sub

  Protected Sub button2(sender As Object, e As EventArgs)
    Response.Write(inta)
  End Sub
End Class

将变量
inta
声明为
Shared

Public Class sample

  Private Property IntA As Integer
    Get
      Return TryCast(Session("IntA"), Integer)
    End Get
    Set(value As Integer)
      Session("IntA") = value
    End Set
  End Property

  Protected Sub button1(sender As Object, e As EventArgs)
    IntA = 2
  End Sub

 Protected Sub button2(sender As Object, e As EventArgs)
   Response.Write(IntA.ToString)
 End Sub

End Class

如果给它赋值,为什么它会被声明为整数?这不是你的答案,但你最好开始使用Option Strict,因为这是ASPX,你忽略了一个事实,即有回发发生,并且这个变量在页面重新加载时没有值(因此为0)。您应该仔细阅读
页的生命周期
。您必须将该值存储在会话变量中才能保留其值。您应该先阅读web如何工作。每个页面都是无状态的,这意味着在每次回发邮件时,您都会丢失所有保存的信息,除非这些信息位于诸如会话/缓存/视图状态之类的容器中。感谢you@IWantToLearn,你看到我的答案了吗。
Public Shared inta As Integer