如何调用ASPX页面上的ASCX页面功能?
问题描述:
我添加了WebUserControl在运行,所以我不能使用MyWebUserControl.MyFunction()
,我有一个母版和我想这一个:如何调用ASPX页面上的ASCX页面功能?
_MainContentPage = CType(_Page.Form.FindControl("MyContentPlaceHolder"), ContentPlaceHolder)
CType(_MainContentPage.FindControl("MyWebUserControl"), myType)
但_MainContentPage.FindControl("MyWebUserControl")
返回一个TableCell的。
我的方式添加WubUserControl:
tcValue = New TableCell()
tcValue.Controls.Add(_Page.LoadControl("Paht/WebUserControl"))
tcValue.ID = "MyWebUserControl"
那么这就是原因_MainContentPage.FindControl("MyWebUserControl")
返回TableCell的 但如何让Web控件,并调用Fcuntion。
答
解决方法是获取TableCell,然后找到控件,然后调用该函数。
_MainContentPage = CType(_Page.Form.FindControl("MyContentPlaceHolder"),ContentPlaceHolder)
MyTableCell = CType(_MainContentPage.FindControl("MyWebUserControl"), TableCell)
MyWebControl = CType(MyTableCell.Controls(0), MyType)
MyWebControl.MyFunction()
答
要将该函数作为Web方法或在asp.net http处理程序中抽取该函数以全局访问,这是多么困难。我认为这样你可以做得更好,而不是使用反射和其他东西来访问它。
+0
那么...另一种方式来做到这一点,谢谢。 – Logar314159 2013-04-05 18:51:26
您可能必须使用反射来探测用户控件类,然后调用该方法。 – AlwaysAProgrammer 2013-04-05 18:00:02
谢谢,但我已经做到了(请参阅问题更新) – Logar314159 2013-04-05 18:27:23
假设您的ascx位于占位符中,您是否可以遍历占位符中的控件并执行类似'If(TypeOf(control)is MyAscx')然后DirectCast控制,MyAscx).MyMethod()'? – valverij 2013-04-05 18:40:11