Например: у меня есть пользовательский элемент управления, давайте назовем его «MyControl1» и я хочу создать функции JavaScript «Show ()» и «Hide ()», которые можно вызывать из javascript на родительской странице - что-то вроде « MyControl1.Show (); "
Очевидно, что на странице может быть несколько элементов управления, поэтому, если вы отбросили 2 элемента управления на странице:
<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>
Единственная проблема, очевидно, в том, что это не работает - но это то, к чему я пытаюсь добраться. Как вы делаете эту работу? Я хочу иметь возможность разрешить странице, на которой находится пользовательский элемент управления (родительская страница), вызывать функцию отображения этого пользовательского элемента управления. Я понимаю, что вы можете просто вызвать Display, потому что это просто js (независимо от того, находится ли он в пользовательском элементе управления или нет), но если у вас есть 2 из этих элементов управления на этой странице, которые не будут работать, так как же вы создаете javascript, чтобы родитель страница может различать, какую функцию пользовательских элементов управления она хочет вызвать?