如何为ASP.net中可以使用控件ID调用的用户控件添加JavaScript函数

如何为ASP.net中可以使用控件ID调用的用户控件添加JavaScript函数,javascript,c#,html,asp.net,Javascript,C#,Html,Asp.net,我想创建一个简单的用户控件,它支持使用控件id调用自己的javascript函数,例如,如果我有以下控件: <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyControl.ascx.cs" Inherits="Controls.MyControl" %> <script type="text/javascript"> function controlClicked(ID) { a

我想创建一个简单的用户控件,它支持使用控件id调用自己的javascript函数,例如,如果我有以下控件:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyControl.ascx.cs" Inherits="Controls.MyControl" %>
<script type="text/javascript">
  function controlClicked(ID) {
      alert('Hello I am Control:'+ID);
  }
</script>

函数控件(ID){
警报(“你好,我是控制:”+ID);
}
我希望能够在包含用户控件的页面上执行以下操作

 <%@ Page Title="" Language="C#" MasterPageFile="~/Light.master" AutoEventWireup="true" CodeBehind="Main.aspx.cs" Inherits="Control.Main" %>
<%@ Register Src="~/Controls.MyControl.ascx" TagPrefix="uc1" TagName="MyControl" %>
        <script type="text/javascript">
          function btnClicked() {
            myControl.controlClicked('myControl');
            }
        </script>
    <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
          <uc1:MyControl runat="server" id="myControl" />

    <asp:Button id="Button1"
               Text="Call UserControl Function"
               onclientclick="btnClicked" 
               runat="server"/>
    </asp:Content>

函数btnClicked(){
controlClicked('myControl');
}

您必须确保每个JavaScript函数都有一个唯一的名称。为此,您可以使用
UniqueID

<script type="text/javascript">
    function controlClicked_<%= UniqueID %>(ID) {
        alert('Hello I am Control:' + ID);
    }
</script>

<asp:Button ID="Button1" Text="Call UserControl Function" runat="server" />

您必须确保每个JavaScript函数都有一个唯一的名称。为此,您可以使用
UniqueID

<script type="text/javascript">
    function controlClicked_<%= UniqueID %>(ID) {
        alert('Hello I am Control:' + ID);
    }
</script>

<asp:Button ID="Button1" Text="Call UserControl Function" runat="server" />

有组织的方法是在这里使用javascript原型特性

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyControl.ascx.cs" Inherits="Controls.MyControl" %>
<script type="text/javascript">
  var <%=this.ClientID%> = 
    {
        controlLoaded: function(ID) {
            alert('Hello I am Loaded:'+ID);
        },
        controlClicked: function(ID) {
            alert('Hello I am Clicked:'+ID);
        }
    }
</script>

var=
{
controlLoaded:函数(ID){
警报(“你好,我已加载:”+ID);
},
控件:函数(ID){
警报(“你好,我被点击了:”+ID);
}
}
“”将为页面上每次出现的“MyControl”生成一个javascript原型对象。然后,您可以使用这个原型对象来为控件的特定出现调用方法。这可以按如下所示进行:

<uc1:MyControl runat="server" id="myControl1" />

<button id="btnShowAlert1" onclick="javascript:btnShowAlert1_Clicked();">Click 1 </button>

<uc1:MyControl runat="server" id="myControl2" />

<button id="btnShowAlert2" onclick="javascript:btnShowAlert2_Clicked();">Click 2</button>    

<script type="text/javascript">
    var myControl1 = <%=myControl1.ClientID%>;
    var myControl2 = <%=myControl2.ClientID%>;

    function btnShowAlert1_Clicked() {
        if(typeof(myControl1) != "undefined") {
            myControl1.controlClicked('myControl1');
        }
    }

    function btnShowAlert2_Clicked() {
        if(typeof(myControl2) != "undefined") {
            myControl2.controlClicked('myControl2');
        }
    }

    window.onload = function() {
        if(typeof(myControl1) != "undefined") {
            myControl1.controlLoaded('myControl1');
        }
    }
</script>

单击1
点击2
var myControl1=;
var myControl2=;
函数btnShowAlert1_单击(){
if(typeof(myControl1)!=“未定义”){
myControl1.controlClicked('myControl1');
}
}
函数btnShowAlert2_单击(){
if(typeof(myControl2)!=“未定义”){
myControl2.controlClicked('myControl2');
}
}
window.onload=函数(){
if(typeof(myControl1)!=“未定义”){
myControl1.controlLoaded('myControl1');
}
}

这里的组织方式是使用javascript原型功能

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyControl.ascx.cs" Inherits="Controls.MyControl" %>
<script type="text/javascript">
  var <%=this.ClientID%> = 
    {
        controlLoaded: function(ID) {
            alert('Hello I am Loaded:'+ID);
        },
        controlClicked: function(ID) {
            alert('Hello I am Clicked:'+ID);
        }
    }
</script>

var=
{
controlLoaded:函数(ID){
警报(“你好,我已加载:”+ID);
},
控件:函数(ID){
警报(“你好,我被点击了:”+ID);
}
}
“”将为页面上每次出现的“MyControl”生成一个javascript原型对象。然后,您可以使用这个原型对象来为控件的特定出现调用方法。这可以按如下所示进行:

<uc1:MyControl runat="server" id="myControl1" />

<button id="btnShowAlert1" onclick="javascript:btnShowAlert1_Clicked();">Click 1 </button>

<uc1:MyControl runat="server" id="myControl2" />

<button id="btnShowAlert2" onclick="javascript:btnShowAlert2_Clicked();">Click 2</button>    

<script type="text/javascript">
    var myControl1 = <%=myControl1.ClientID%>;
    var myControl2 = <%=myControl2.ClientID%>;

    function btnShowAlert1_Clicked() {
        if(typeof(myControl1) != "undefined") {
            myControl1.controlClicked('myControl1');
        }
    }

    function btnShowAlert2_Clicked() {
        if(typeof(myControl2) != "undefined") {
            myControl2.controlClicked('myControl2');
        }
    }

    window.onload = function() {
        if(typeof(myControl1) != "undefined") {
            myControl1.controlLoaded('myControl1');
        }
    }
</script>

单击1
点击2
var myControl1=;
var myControl2=;
函数btnShowAlert1_单击(){
if(typeof(myControl1)!=“未定义”){
myControl1.controlClicked('myControl1');
}
}
函数btnShowAlert2_单击(){
if(typeof(myControl2)!=“未定义”){
myControl2.controlClicked('myControl2');
}
}
window.onload=函数(){
if(typeof(myControl1)!=“未定义”){
myControl1.controlLoaded('myControl1');
}
}