我有一个 Default.aspx 页面,我在其中使用了一个用户控件。在 usercontrol.cs 中的某些情况下,我必须调用 Default.aspx.cs 页面(即用户控件的父页面)中存在的函数。请帮助并告诉我完成这项任务的方法。
问问题
5526 次
4 回答
0
您必须将Page
属性转换为实际类型:
var def = this.Page as _Default;
if(def != null)
{
def.FunctionName();
}
该方法必须是公开的:
public partial class _Default : System.Web.UI.Page
{
public void FunctionName()
{
}
}
但请注意,这不是最佳实践,因为您将UserControl
与硬链接Page
。通常,UserControl 的一个目的是可重用性。这里不再。与它的页面进行通信的最佳方式UserControl
是使用可由页面处理的自定义事件。
于 2013-04-03T11:27:20.210 回答
0
父.aspx.cs
public void DisplayMsg(string message)
{
if (message == "" || message == null) message = "Default Message";
Response.Write(message);
}
要从用户控件调用父页面的函数,请使用以下命令:UserControl.ascx.cs
this.Page.GetType().InvokeMember("DisplayMsg", System.Reflection.BindingFlags.InvokeMethod, null, this.Page, new object[] { "My Message" });
这对我来说很好..
于 2014-02-12T09:37:48.030 回答
0
向用户控件添加事件:
public event EventHandler SpecialCondition;
当满足条件时,在您的用户控件中引发此事件:
private void RaiseSpecialCondition()
{
if (SpecialCondition != null) // If nobody subscribed to the event, it will be null.
SpecialCondition(this, EventArgs.Empty);
}
然后在包含用户控件的页面中,监听事件:
public partial class _Default : System.Web.UI.Page
{
public void Page_OnLoad(object sender, EventArgs e)
{
this.UserControl1.OnSpecialCondition += HandleSpecialCondition;
}
public void HandleSpecialCondition(object sender, EventArgs e)
{
// Your handler here.
}
}
如果需要,您可以将 更改EventArgs
为更有用的东西来传递值。
于 2013-04-03T12:22:40.157 回答
-2
尝试这个
MyAspxClassName aspxobj= new MyUserControlClassName();
aspxobj.YourMethod(param);
于 2013-04-03T11:34:35.707 回答