2007-05-18

Namn på properties i Ajax extenders

Properties för Ajax-extenders som ärver av ExtenderControlBase ser typiskt ut så här:
[ExtenderControlProperty]
[DefaultValue("")]
public string MyProperty
{
get
{
return GetPropertyValue("MyProperty", "");
}
set
{
SetPropertyValue("MyProperty", value);
}
}


I behavior-klassen på klientsidan måste en property med samma namn finnas:
get_MyProperty : function() {
return this._myProperty;
},
set_MyProperty : function(value) {
this._myProperty = value;
}


Men om man nu vill att propertyn ska ha ett namn på serversidan och ett annat på klientsidan? Kul att du frågade. Riktigt enkelt. Markera propertyn på serversidan med attributet ClientPropertyName. Så om vi vill att MyProperty ska heta myProp på klientsidan, skriver man:
[ExtenderControlProperty]
[DefaultValue("")]
[ClientPropertyName("myProp")]
public string MyProperty
{
get
{
return GetPropertyValue("MyProperty", "");
}
set
{
SetPropertyValue("MyProperty", value);
}
}


På klientsidan kan vi då skriva:
get_myProp : function() {
return this._myProperty;
},
set_myProp : function(value) {
this._myProperty = value;
}


Mer om attributen:
http://ajax.asp.net/ajaxtoolkit/Walkthrough/ExtenderClasses.aspx

Inga kommentarer: