Asp.net 如何将元素附加到另一个Ajax组件

Asp.net 如何将元素附加到另一个Ajax组件,asp.net,ajax,asp.net-ajax,Asp.net,Ajax,Asp.net Ajax,请原谅,我不熟悉ASP.NET Ajax。我知道该方法是将html元素附加到ajax组件。但我不知道如何从当前组件中分离它。并附上另一个 假设有一个元素ctl00\u placeholder main\u UserRegistration\u txbPassword1已附加到组件类型AccelWebControlXtender.HelperBehavior,创建的组件id是ctl00\u placeholder main\u UserRegistration\u txbPassword1\u h

请原谅,我不熟悉ASP.NET Ajax。我知道该方法是将html元素附加到ajax组件。但我不知道如何从当前组件中分离它。并附上另一个

假设有一个元素
ctl00\u placeholder main\u UserRegistration\u txbPassword1
已附加到组件类型
AccelWebControlXtender.HelperBehavior
,创建的组件id是
ctl00\u placeholder main\u UserRegistration\u txbPassword1\u helper\u bhv
。代码如下所示。请复习一下

Sys.Application.add_init(function() {
    $create(AccelaWebControlExtender.HelperBehavior, {"closeTitle":"Close","id":"ctl00_PlaceHolderMain_UserRegistration_txbPassword1_helper_bhv","isRTL":false,"title":"Help"}, null, null, $get("ctl00_PlaceHolderMain_UserRegistration_txbPassword1"));
});

我认为首先应该通过id检索组件,然后进行分离和连接工作。希望有人能给我一些帮助。谢谢

在做了一些研究之后,我发现在Asp.net Ajax中封装客户端行为的扩展Web服务器控件被称为
,并且我发现组件的附件是由Asp.net自动完成的。我们可以看到,
Sys.Application.add_init(function()
代码是由Asp.net在aspx页面中自动生成的。因此,如果我们想自定义Web服务器控件的原始行为,我相信可以使用Javascript OOP方式(旧的和相同的)

例如: 如果原始行为代码被吹走

// Register the namespace for the control.
Type.registerNamespace('Samples');

//
// Define the behavior properties.
//
Samples.FocusBehavior = function(element) { 
    Samples.FocusBehavior.initializeBase(this, [element]);

    this._highlightCssClass = null;
    this._nohighlightCssClass = null;
}

//
// Create the prototype for the behavior.
//
Samples.FocusBehavior.prototype = {
    initialize : function() {
        Samples.FocusBehavior.callBaseMethod(this, 'initialize');

        $addHandlers(this.get_element(), 
                     { 'focus' : this._onFocus,
                       'blur' : this._onBlur },
                     this);

        this.get_element().className = this._nohighlightCssClass;
    },

    dispose : function() {
        $clearHandlers(this.get_element());

        Samples.FocusBehavior.callBaseMethod(this, 'dispose');
    },

    //
    // Event delegates
    //
    _onFocus : function(e) {
        if (this.get_element() && !this.get_element().disabled) {
            this.get_element().className = this._highlightCssClass;          
        }
    },

    _onBlur : function(e) {
        if (this.get_element() && !this.get_element().disabled) {
            this.get_element().className = this._nohighlightCssClass;          
        }
    },


    //
    // Behavior properties
    //
    get_highlightCssClass : function() {
        return this._highlightCssClass;
    },

    set_highlightCssClass : function(value) {
        if (this._highlightCssClass !== value) {
            this._highlightCssClass = value;
            this.raisePropertyChanged('highlightCssClass');
        }
    },

    get_nohighlightCssClass : function() {
        return this._nohighlightCssClass;
    },

    set_nohighlightCssClass : function(value) {
        if (this._nohighlightCssClass !== value) {
            this._nohighlightCssClass = value;
            this.raisePropertyChanged('nohighlightCssClass');
        }
    }
}

// Optional descriptor for JSON serialization.
Samples.FocusBehavior.descriptor = {
    properties: [   {name: 'highlightCssClass', type: String},
                    {name: 'nohighlightCssClass', type: String} ]
}

// Register the class as a type that inherits from Sys.UI.Control.
Samples.FocusBehavior.registerClass('Samples.FocusBehavior', Sys.UI.Behavior);

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
我认为我们可以覆盖Javascript对象Samples.FocusBehavior及其原型对象的一些方法来实现定制

比如说

我可以像这样重写脚本中的
Samples.FocusBehavior.prototype.\u onFocus

Samples.FocusBehavior.prototype._onFocus = function (e) {
    alert('test');
    if (this.get_element() && !this.get_element().disabled) {
        this.get_element().className = this._highlightCssClass;
    }
};
只需确保此代码由浏览器在原始代码之后解析即可。
我不确定这是否是正确的方法。我希望有人能帮助验证。非常感谢

这是它的一部分,请复习一下。 干杯