0

当我调用我的函数时Me.Load一切正常,但是当我仅在按钮单击事件上触发我的函数时,里面的所有变量都会丢失它们的设定值。我刚开始使用 VB.NET,所以我不完全了解这里的范围性质。

这是我的代码:

Public Class WorkflowForward
    Inherits FileBound.Web.FBBasePage

    ' Private decalrations
    Private cfile_id As String = ""                             ' Current files ID
    Private FBProject As Project = Nothing                      ' FileBound Project object
    Private cmd As String = ""                                  ' SQL query string
    Private FBFile As FileBound.File = Nothing                  ' Filebound file holder
    Private FBRoutes As RouteCollection = Nothing               ' FileBound route collection holder


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

        ' Set SqlDataSource connection string
        FBSqlDataSource.ConnectionString = ConfigurationManager.ConnectionStrings("FB_0371tcc").ConnectionString

        If Not Me.IsPostBack Then
            ' Set values to variables
            Page_setup() ' Here I set values to variabels
            setRoute_debug("Admin1 Test")

        End If


    End Sub

    Protected Sub sendEmail_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles sendEmail.Click
        ' CAN I HAZ SOME TEST????
        'setRoute_debug(emailTo.SelectedValue.ToString)

        Response.Write("<script>" & Me.FBRoutes.TotalCount.ToString & "</script>")

    End Sub

    Private Sub setRoute_debug(ByVal route_to As String)

        ' IF WE HAZ SOME ITEMS FINISH THEM MUHUHAHHAHAHA
        If FBBusiness.LoggedInUser.RoutedItems.TotalCount > 0 Then
            For Each item As RoutedItem In FBBusiness.LoggedInUser.RoutedItems
                item.Complete("Completed!")
            Next
        End If




        ' DEBUG MODE #YOLO
        ' I'VE DONE IT I CAN HAZ ROUTEZ
        For Each r As Route In Me.FBRoutes
            If r.Name = route_to Then
                For Each doc As FileBound.Document In FBFile.Documents
                    doc.Route(r.ID)
                Next

            End If
        Next


    End Sub

    Private Sub Page_setup()
    ' Some code that sets values
    End Sub
End Class

当我单击按钮时,它会引发此错误:

Object reference not set to an instance of an object. 
Line 46:         Response.Write("<script>" & Me.FBRoutes.TotalCount.ToString & "</script>")
4

1 回答 1

1

单击 asp.net 页面的按钮将作为PostBack.

您正在设置页面仅在

If Not Me.IsPostBack

这对于 asp.net 控件来说很好,因为它们使用ViewState.

当点击一个按钮时,服务器会收到一个新的请求,并创建一个新的 Page 对象。您的变量没有为此对象设置。

在每个 PostBack 上设置您的页面级别变量,如下所示

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

    ' Set SqlDataSource connection string
    FBSqlDataSource.ConnectionString = ConfigurationManager.ConnectionStrings("FB_0371tcc").ConnectionString

    Page_setup() ' Here I set values to variables

    If Not Me.IsPostBack Then
        'Set Page level control values like TextBox values
    End If
End Sub
于 2013-01-22T03:54:12.280 回答