Поделиться через


Практическое руководство. Добавление событий клиентского сценария в серверные веб-элементы управления ASP.NET

Обновлен: Ноябрь 2007

Клиентские сценарии можно добавлять в элементы управления веб-узла ASP.NET декларативно — так же, как и в элементы HTML. Также события сценария клиента можно добавлять в серверные веб-элементы управления ASP.NET программными средствами, что удобно, если событие или код основывается на информации, доступной только во время выполнения.

7ytf5t7k.alert_note(ru-ru,VS.90).gifПримечание.

Обращаться к элементам управления в клиентском сценарии можно по их идентификаторам. Дополнительные сведения см. в разделе Клиентский сценарий на веб-страницах ASP.NET.

Добавление события клиентского сценария onclick к кнопкам требует выполнения особой процедуры, которая описана ниже в данном разделе.

7ytf5t7k.alert_note(ru-ru,VS.90).gifПримечание.

Поддержка клиентского сценария зависит от обозревателя. Например, Internet Explorer, Mozilla и обозреватели для мобильных устройств могут обеспечивать различную степень поддержки клиентских сценариев.

Декларативное добавление клиентского обработчика событий в серверный элемент управления ASP.NET

  • В разметке элемента управления добавьте атрибут для события — например, для onmouseover или onkeyup. В качестве значения атрибута добавьте клиентский сценарий, которые необходимо выполнить.

    7ytf5t7k.alert_note(ru-ru,VS.90).gifПримечание.

    После клиентского сценария в атрибуте всегда должна ставиться точка с запятой («;»). Это необходимо для того, чтобы при создании клиентского сценария для элемента управления в ASP.NET (например, если свойству AutoPostBack элемента управления присвоено значение true) сперва запускался код разработчика.

    Любая пара «атрибут-значение» в разметке элемента управления, не соответствующая свойствам элемента управления, передается обозревателю без изменений.

    В следующем примере кода приведена страница ASP.NET, на которой размещен клиентский сценарий, который изменяет цвет текста кнопки при наведении указателя мыши.

    <%@ Page Language="VB"%>
    <html>
    <head runat="server">
      <title>Untitled Page</title>
      <script type="text/javascript">
          var previousColor;
          function MakeRed()
          {
              previousColor = window.event.srcElement.style.color;
              window.event.srcElement.style.color = "#FF0000";
          }
          function RestoreColor()
          {
              window.event.srcElement.style.color = previousColor;
          }
      </script>
    </head>
    <body>
      <form id="form1" runat="server">
        <asp:button id="Button1" runat="server"
          text="Button1"
            onmouseover="MakeRed();"onmouseout="RestoreColor();" />
      </form>
    </body>
    </html>
    
<%@ Page Language="C#" %>
<html>
<head runat="server">
  <title>Untitled Page</title>
  <script type="text/javascript">
      var previousColor;
      function MakeRed()
      {
          previousColor = window.event.srcElement.style.color;
          window.event.srcElement.style.color = "#FF0000";
      }
      function RestoreColor()
      {
          window.event.srcElement.style.color = previousColor;
      }
  </script>
</head>
<body>
  <form id="form1" runat="server">
  <asp:button id="Button1" runat="server" 
    text="Button1" 
      onmouseover="MakeRed();"onmouseout="RestoreColor();" />
  </form>
</body>
</html>

Программное добавление клиентского обработчика событий в элемент управления ASP.NET

  • В событии Init или Load на странице вызовите метод Add коллекции Attributes элемента управления.

    В следующем примере кода показано, как добавить клиентский сценарий в элемент управления TextBox. Клиентский сценарий отображает длину текста в элементе управления TextBox. В сценарии предполагается, что на странице содержится элемент span с именем spanCounter.

    Protected Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs)
        Dim displayControlName As String = "spanCounter"
        TextBox1.Attributes.Add("onkeyup", _
            displayControlName & ".innerText=this.value.length;")
    End Sub
    
protected void Page_Load(object sender, EventArgs e)
{
    String displayControlName = "spanCounter";
    TextBox1.Attributes.Add("onkeyup", displayControlName + 
        ".innerText=this.value.length;");
}

Добавление клиентского события onclick к кнопке

  • Задайте в качестве значения свойства OnClientClick кнопки (элементы управления Button, LinkButton, и ImageButton) клиентский сценарий, который необходимо выполнять.

    В следующем примере кода показано, как добавить клиентский сценарий события щелчка мыши в элемент управления Button.

    <%@ Page Language="VB" %>
    <script runat="server">
        Sub Button1_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs)
            Label1.Text = "Server click handler called."
        End Sub
    </script>
    
    <body>
      <form id="form1" runat="server">
        <asp:Button ID="Button1" Runat="server" 
          OnClick="Button1_Click" 
            OnClientClick="return confirm('Ready to submit.')" 
            Text="Test Client Click" />
        <br />
        <asp:Label ID="Label1" Runat="server" text="" />
      </form>
    </body>
    </html>
    
<%@ Page Language="C#" %>
<script runat="server">
    protected void Button1_Click(Object sender, EventArgs e)
    {
        Label1.Text = "Server click handler called.";
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
  <form id="form1" runat="server">
    <asp:Button ID="Button1" Runat="server" 
      OnClick="Button1_Click" 
        OnClientClick="return confirm('Ready to submit.')" 
        Text="Test Client Click" />
    <br />
    <asp:Label ID="Label1" Runat="server" text="" />
  </form>
</body>
</html>

Безопасность

Клиентский сценарий может выполнять потенциально вредоносные функции на клиентском компьютере. Следует исключительно осторожно подходить к записи сценария на странице, особенно в том случае, если он создается или изменяется в ответ на ввод данных пользователем. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.

См. также

Задачи

Практическое руководство. Настройка атрибутов HTML для элементов управления на веб-страницах ASP.NET

Пошаговое руководство. Добавление клиентского сценария динамически на веб-страницы ASP.NET

Основные понятия

Клиентский сценарий на веб-страницах ASP.NET