2012-03-11 60 views
0

一個用戶控件我有一個母版頁和用戶控制調用從母版頁

我已經寫在用戶控件的事件,我想打電話給該事件在我的母版頁。

以下是我的代碼

母版-----------(我認爲這部分是正確的,它是做什麼的,是該做的。呼叫用戶控制功能)

Dim App_Cl_tpPerson As New App_Cl_tpPerson 

App_Cl_tpPerson.PersonAdd_Click(sender, e) 

用戶控件頁----------(我感覺問題是在這裏)

Public Sub PersonAdd_Click(ByVal sender As Object, ByVal e As EventArgs) 
    Try 

     If Req_No = 0 Then 
      Req_No = Convert.ToInt32(Request.QueryString("reqID")) 
     End If 

    Catch ex As Exception 

    End Try 
End Sub 

錯誤消息是「OBJEC T參考未設置爲對象的實例「 。

+0

哪條特殊線路拋出異常?通過調試器進行調試 – devdigital 2012-03-11 13:28:55

回答

0

如果您在母版頁中創建了控件,則還需要在其中放置一個事件處理程序。您收到錯誤的原因是因爲母版頁的控件正在尋找母版頁的類中的事件處理程序,並且沒有定義。

由於您所做的只是獲取主頁面可以訪問的QueryString值,因此只需將該方法從派生頁面移至主頁面即可完成所需。

然後,因爲您需要Req_No值可以訪問您的模板頁面,所以您必須將公共屬性或方法添加到您的母版頁以允許您的模板頁面訪問該值。

最後,用你的財產/方法調用你的模板頁面,你會做以下幾點:

Public Sub DoSomething() 
    Dim Req_No As Integer = CType(Me.Master, MyMasterClassName).Req_NoProperty 
End Sub 

(注意,我不使用VB所有的時候,所以我不知道如果CType調用可以工作,但總體思路是你需要將頁面類的引用強制轉換爲你的特定主頁的類,因爲這是你寫的屬性或方法所在的地方。

+0

感謝您提供的信息。 我沒有在我的母版頁中放置任何控件。所有的控件都在我的用戶控制頁面中。通過使用上面提到的代碼,我只是引用我的用戶控件並調用所需的函數。 請幫我 謝謝 尼克 – 2012-03-11 16:35:12

+0

我不知道我明白你爲什麼試圖從母版頁引用它。 App_Cl_tpPerson是用戶控制頁面的類的名稱嗎?也許我不明白你的意思是用戶控制頁面。你的意思是使用主模板的aspx頁面嗎? – 2012-03-11 16:57:59

+0

用戶控件是.ascx文件,UC的名稱是App_Cl_tpPerson。我想要的是從我的母版頁調用App_Cl_tpPerson.ascx頁面中寫入的事件/函數。在母版頁中,我宣佈了用戶控件,並可以看到我的UC事件。問題是當UC的事件被調用時,它說「對象沒有設置爲對象的實例」 – 2012-03-11 17:04:46