例如:我有一个用户控件,叫做"MyControl1",我想创建"Show()"和"Hide()" Javascript函数,可以从父页面的Javascript中调用,类似于"MyControl1.Show();"。
显然页面上可能有多个控件,所以如果您在页面上放置了两个控件:
我该如何开始做这个?我找到的每篇文章都是关于如何在用户控件中挂接事件,我只想让父页面能够随意调用某些函数——或者也许有一种方法可以使用事件来完成我正在尝试的事情,但我不理解它。
编辑:这似乎传达得不正确,那么这个怎么样?
这就是我的假设控件长什么样子:
现在,“父级”页面会像这样注册控件:
唯一的问题是,显然这不起作用 - 但这就是我想要解决的问题。如何使其起作用?我希望能够允许嵌套用户控件的页面(父页面)调用该用户控件的显示功能。我知道你可以直接调用显示功能,因为它只是js(无论它是否在用户控件中),但如果你在该页面上有2个这样的控件,那么这种方法就行不通了,所以你如何创建javascript代码,使得父页面可以区分哪个用户控件的函数需要被调用?
显然页面上可能有多个控件,所以如果您在页面上放置了两个控件:
<MyTag:MyControl ID="MyControl1" runat="server" />
<MyTag:MyControl ID="MyControl2" runat="server" />
希望能够像这样做一些事情:
function ParentPageJavascriptFunction(){
MyControl1.Show();
MyControl2.Hide();
}
我该如何开始做这个?我找到的每篇文章都是关于如何在用户控件中挂接事件,我只想让父页面能够随意调用某些函数——或者也许有一种方法可以使用事件来完成我正在尝试的事情,但我不理解它。
编辑:这似乎传达得不正确,那么这个怎么样?
这就是我的假设控件长什么样子:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyControl.ascx.cs" Inherits="controls_MyControl" %>
<script type="text/javascript">
function Display(msg) {
var Label1ClientID = '<%= Label1.ClientID %>';
document.getElementById(Label1ClientID)... (display the message)
}
</script>
<asp:Label ID="Label1" runat="server"> </asp:Label>
现在,“父级”页面会像这样注册控件:
<%@ Register Src="~/controls/MyControl.ascx" TagName="MyControl" TagPrefix="MyTag" %>
在文本主体中,它包含以下内容:
<asp:Button ID="MyButton1" runat="server" Text="Display" OnClientClick="javascript:MyControl1.Display('hello'); return false;" />
<MyTag:MyControl Id="MyControl1" runat="server">
</MyTag:MyControl>
唯一的问题是,显然这不起作用 - 但这就是我想要解决的问题。如何使其起作用?我希望能够允许嵌套用户控件的页面(父页面)调用该用户控件的显示功能。我知道你可以直接调用显示功能,因为它只是js(无论它是否在用户控件中),但如果你在该页面上有2个这样的控件,那么这种方法就行不通了,所以你如何创建javascript代码,使得父页面可以区分哪个用户控件的函数需要被调用?
ClientID
来区分,则没有问题。那么它只是“获取用特定ClientId表示的客户端对象”和“调用其上的方法”。问题在于大多数代码没有保持实例的清晰分离... - user166390