【问题标题】:How to call user control's(.ascx) method in .aspx page如何在.aspx页面中调用用户控件的(.ascx)方法
【发布时间】:2013-11-12 14:23:55
【问题描述】:

我创建了用户控件,在该用户控件中我有一个方法,我想在 .aspx 中调用此方法。我已经在 aspx 中注册了这个用户控件

例如: 下面是用户控件中的方法。

public void SetGridData()
{
}

我想在 .aspx.cs 文件中调用上述方法。 这个方法怎么调用?

【问题讨论】:

  • 您正在打开一罐蠕虫病毒。这种方法究竟是用来做什么的?我问的原因是它没有返回任何东西,而且,通过方法名称,它似乎用于用数据更新控件中的网格。问题是,如果你在 aspx 中调用它,它可能不会在你想要的时候发生——也就是说,在渲染时。我们可能需要更多关于您正在尝试做什么的信息。
  • @matt 我没有在这里粘贴 SetGridData() 方法的所有代码。
  • 我明白这一点。我的意思是,如果您在 ascx 文件中调用此方法,它将发生在渲染阶段。查看 aspx 页面生命周期,了解您可能不想这样做的原因:msdn.microsoft.com/en-us/library/ms178472.ASPX 渲染发生在 Page_Load 和 Page_Init 之后。
  • @matt,这只是一个例子,我必须在.aspx.cs文件中调用用户控件的X方法。

标签: c# asp.net .net user-controls webforms


【解决方案1】:

在 ASPX 页面的代码中,您应该有对用户控件对象的引用。例如,如果用户控件被称为MyUserControl,那么页面类级别的某个位置(可能在单独的部分类设计器文件中)应该是:

protected MyUserControl myUserControl1;

或类似的东西。这是页面类的用户控件的实例。页面生命周期应该在达到Page_Load 时实例化它,因此从那时起您可以使用该对象:

myUserControl1.SetGridData();

【讨论】:

  • 可以在aspx页面的Page_load之前使用和调用usercontrol的方法/函数吗?
  • @user35:这取决于调用该方法时您需要在页面/控件中提供什么。对象本身在页面生命周期的早期初始化,但某些页面生命周期事件可能尚未被调用:stackoverflow.com/a/7335271/328193
【解决方案2】:

如果这只是一个示例,那么您可以使用以下语法调用代码文件中的方法:

<%= SetGridData(); %>

但是,请注意我在上面的 cmets 中添加的注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多