gpt4 book ai didi

ASP.Net ScriptControl - 从另一种方法调用一种方法

转载 作者:行者123 更新时间:2023-12-02 20:48:31 24 4
gpt4 key购买 nike

假设我有两个脚本控件,其中一个控件将另一个作为子控件:

ParentControl : ScriptControl
{
ChildControl childControl;
}

子控件的脚本:

ChildControl = function(element) 
{
ChildControl.initializeBase(this, [element]);
}

ChildControl.prototype =
{
callMethod: function()
{
return 'hi';
},

initialize: function()
{
ChildControl.callBaseMethod(this, 'initialize');
},

dispose: function()
{
ChildControl.callBaseMethod(this, 'dispose');
}
}

在脚本端,我想调用子控件上的方法:

ParentControl.prototype =
{
initialize: function()
{
this._childControl = $get(this._childControlID);
this._childControl.CallMethod();

ParentControl.callBaseMethod(this, 'initialize');
},

dispose: function()
{
ParentControl.callBaseMethod(this, 'dispose');
}
}

问题是,每次我尝试时都会说找不到或不支持此方法。 ParentControl 不应该访问 ChildControl 上的所有方法吗?

是否有某种方法必须公开该方法以便 ParentControl 可以看到它?

更新是否可以“输入” this._childControl ?

这就是我问的原因...当我使用 Watch 时,系统知道 ChildControl 类是什么,并且我可以从类本身调用方法,但是,我无法从 this._childControl 调用相同的方法目的。您可能会认为,如果内存中的类设计(?)能够识别现有的方法,那么从该类实例化的对象也会识别。

最佳答案

在客户端上,您可以通过将父控件对象的名为 _childControlID 的字段传递给 $get 来使用它。这有一些问题:

  1. _childControlID 是如何设置的?我猜测将其添加为服务器上父控件描述符中的属性,但您没有显示该代码,也没有在客户端父控件类上显示属性。
  2. $get 返回元素引用——而不是控件。因此,即使 _childControlID 设置为有效的元素 ID,该元素也不会具有名为 CallMethod 的方法。如果客户端子控件类在父控件之前初始化,则该元素将有一个名为“control”的字段,您可以使用该字段来访问将自身“附加”到该元素的脚本控件。当然,只有子控件在父控件之前初始化时,这才有效。

关于ASP.Net ScriptControl - 从另一种方法调用一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/400849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com