在自定义ASP.NET AJAX服务器控件中访问JavaScript属性

时间:2009-06-29 20:51:21

标签: asp.net javascript

我正在创建一个自定义ASP.NET AJAX服务器控件,其中可以在页面上放置控件的多个实例。该控件包装JavaScript对象,我需要访问每个单独控件的那些对象。例如,JavaScript对象可能具有名为“x”的属性,control1可能将x设置为5,control2可能设置为10.如何访问每个控件的JavaScript对象?以下是一些可能有用的代码段:

HTML

    <CustomControl:MyControl ID="MyControl1" runat="server" x="5"/>
    <CustomControl:MyControl ID="MyControl2" runat="server" x="10"/>

的JavaScript

alert(MyControl1.x); //result 5
alert(MyControl2.x); //result 10

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

Chris的建议文章引导我找到了正确的解决方案。要访问自定义控件的JavaScript属性,必须使用ScriptControl的库来执行$ find函数来定位控件。例如:

实施控件的ASP.NET页面中的JavaScript

var ctrl1 = $find("<%=MyControl1.ClientID%>");
var ctrl2 = $find("<%=MyControl2.ClientID%>");

ctrl.set_x(5);
alert(ctrl1.x); //result 5

ctrl2.set_x(10);
alert(ctrl2.x); //result 10

控制中的JavaScript

CustomControl.MyControl = function(element) {
   CustomControl.MyControl.initializeBase (this, [element]);

   this.x = null;

}

CustomControl.MyControl.prototype = {
    set_x: function(value) {
          this.x = value;     
    } 
}

注意:我不确定要回答你自己的问题。我将向克里斯的答案进行投票,以帮助我找到正确的文章。如果还有其他优惠规则,我很乐意帮忙。

答案 2 :(得分:0)

您可能需要使用可怕的eval()函数将字符串转换为JSON,

这是一篇很棒的帖子,可以帮助您:Safely turning a JSON string into an object