Здравствуйте!
Возможно, кто-нибудь сталкивался с подобным. Пытаюсь создать собственный ajax-контрол в VS 2008 по
этому руководству. Всё нормально компилируется и билдится, но при попытке запустить страницу (asp сайт) с использованием созданного экстендера, страница не грузится, выдавая ошибку javascript:
"name: Sys.ArgumentNullException
message: Sys.ArgumentNullException: Значение не может быть неопределенным.
Имя параметра: id"
Перепробовала всё, что пришло в голову, но ничего не помогает. Если кто знает, в чём может быть дело, подскажите, пожалуйста. Проект
прилагаю. Отдельно код - в приложении.
Спасибо!
Приложение:
//-----------------------TextPreviewExtender.cs-------------------------------------------
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using AjaxControlToolkit;
[assembly: System.Web.UI.WebResource("MyCustomExtenders.TextPreviewBehavior.js", "text/javascript")]
namespace MyCustomExtenders
{
[Designer(typeof(TextPreviewDesigner))]
[ClientScriptResource("MyCustomExtenders.TextPreviewBehavior", "MyCustomExtenders.TextPreviewBehavior.js")]
[TargetControlType(typeof(TextBox))]
public class TextPreviewExtender : ExtenderControlBase
{
[ExtenderControlProperty]
[DefaultValue("")]
[IDReferenceProperty(typeof(Label))]
public string TargetLabelID
{
get
{
return GetPropertyValue("TargetLabelID", "");
}
set
{
SetPropertyValue("TargetLabelID", value);
}
}
[ExtenderControlProperty]
[DefaultValue("")]
public string DisabledText
{
get
{
return GetPropertyValue("DisabledText", "");
}
set
{
SetPropertyValue("DisabledText", value);
}
}
}
}
//------------------------------------------------TextPreviewBehavior.js------------------------------------------------------
Type.registerNamespace('MyCustomExtenders');
MyCustomExtenders.TextPreviewBehavior = function(element) {
MyCustomExtenders.TextPreviewBehavior.initializeBase(this, [element]);
this._targetLabelIDValue = null;
this._disabledTextValue = null;
}
MyCustomExtenders.TextPreviewBehavior.prototype = {
initialize : function() {
MyCustomExtenders.TextPreviewBehavior.callBaseMethod(this, 'initialize');
// Initalization code
$addHandler(this.get_element(), 'keyup',
Function.createDelegate(this, this._onkeyup));
this._onkeyup();
},
dispose : function() {
// Cleanup code
MyCustomExtenders.TextPreviewBehavior.callBaseMethod(this, 'dispose');
},
// Property accessors
//
get_TargetLabelID : function() {
return this._targetLabelIDValue;
},
set_TargetLabelID : function(value) {
this._targetLabelIDValue = value;
},
get_DisabledText : function() {
return this._disabledTextValue;
},
set_DisabledText : function(value) {
this._disabledTextValue = value;
},
_onkeyup : function() {
var e = $get(this._targetLabelIDValue);
alert ("!");
if (e) {
var disabled = ("" == this.get_element().value);
//e.disabled = disabled;
if ( this._disabledTextValue) {
if (disabled) {
this._oldValue = e.value;
e.value = this._disabledTextValue;
}
else
{
if(this._oldValue){
e.value = this._oldValue;
}
}
}
}
}
}
MyCustomExtenders.TextPreviewBehavior.registerClass('MyCustomExtenders.TextPreviewBehavior', AjaxControlToolkit.BehaviorBase);
//----------------------------------------------TextPreviewDesigner.cs------------------------------------------------------------------------
using System.Web.UI.WebControls;
using System.Web.UI;
namespace MyCustomExtenders
{
class TextPreviewDesigner : AjaxControlToolkit.Design.ExtenderControlBaseDesigner<TextPreviewExtender>
{
}
}