2011-09-22 5 views
-3

다음 코드에서 두 개의 클래스 유효 범위 변수 intCompanyIDintEmployeeID이 있습니다. btnFetch_Click의 값으로 설정 한 후 나중에 btnSubmit_Click에서 읽으려고하면 0으로 설정됩니다.값이 할당 된 하위가 끝날 때 정수 값이 0으로 재설정됩니다.

왜 이런가요?

Option Explicit On 
Imports MySql.Data.MySqlClient 
Imports System.Data 

Public Class EmployeeQuestionaire 
Inherits System.Web.UI.Page 

Dim intCompanyID As Integer 

Dim intEmployeeID As Integer 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
    Handles Me.Load 

End Sub 

Protected Sub btnFetch_Click(ByVal sender As Object, ByVal e As EventArgs) 
    Handles btnFetch.Click 

    intEmployeeID = Convert.ToInt32(txtUserID.Text) 
    intCompanyID = 1 

    msgbox (intEmpoyeeID & " " & intCompanyID) ' this shows the values 
End Sub 

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As EventArgs) 
    Handles btnSubmit.Click 

    MsgBox(intCompanyID & " " & intEmployeeID) 'shows O O 
End Sub 
+0

어디에서 변수를 선언 했습니까? 장소 상에서? 'Option Explicit'을 활성화 시켰습니까? –

+3

우리가 당신을 도울 수 있도록 코드를 제시해야합니다. 그렇지 않으면 우리는 추측을 할 수 있습니다. –

+0

코드를 게시해야하지만 참조가 아닌 값으로 전달하는 것처럼 들립니다. –

답변

2

ASP.NET은 웹 서버로의 여행 사이에 어떤 상태를 저장하지 않습니다. 따라서 값을 저장하기 위해 어딘가를 찾아야합니다. 당신이 txtUserId 때마다 다시 읽을 수있다, 또는

Protected Sub btnFetch_Click 
    Session ("MyEmployeeId") = Convert.ToInt32(txtUserID.Text) 
End Sub 

Protected Sub btnSubmit_Click 
    intEmployeeID = Session("MyEmployeeId") 
End Sub 

: 당신은 Session 개체를 사용할 수있는 다른 많은 방법이있다

Protected Sub btnFetch_Click 
    intEmployeeid = Convert.ToInt32(txtUserID.Text) 
End Sub 

Protected Sub btnSubmit_Click 
    intEmployeeID = Convert.ToInt32(txtUserID.Text) 
End Sub 

,하지만 궁극적으로 당신이 훨씬 더 기본적인 이해가 필요하다고 생각 ASP.NET의. WinForms 프로그래밍이나 사용했던 것과는 매우 다릅니다. 하나, 당신은 정말 코드는 일반적으로 아무도 "확인"을 클릭 웹 서버에서 실행되고 MsgBox을 사용해서는 안됩니다!

0

페이지가 다시 게시 때마다, ASP.NET 페이지 객체를 생성하고 요청 사이에 상태를 유지하기 위해 ASP.NET state management 기술을 사용할 필요가 있으므로 모든 컨트롤과 사용자가 정의한 변수를 생성합니다. 예를 들어

,

Protected Sub btnFetch_Click(ByVal sender As Object, ByVal e As EventArgs) 
    Handles btnFetch.Click 
    int intEmployeeID; 
    int.TryParse(txtUserID.Text,out intEmployeeID); 
    Session("intCompanyID")=1 
    Session("intEmployeeID")=intEmployeeID; 
    msgbox (intEmpoyeeID & " " & Session("intCompanyID")) 
End Sub 

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As EventArgs) 
    Handles btnSubmit.Click 
    If Not IsNothing(Session("intCompanyID")) Then 
     MsgBox(Session("intCompanyID) & " " & Session("intEmployeeID")) 
    End If 
End Sub 
관련 문제