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