Share via


Clientfunktionalität in einem Serversteuerelement

Bei der Webprogrammierung liegt die Verantwortung für die Clientfunktionalität traditionell auf der Seite des Webseitenentwicklers, und die Funktionalität wird nicht in Serverkomponenten eingekapselt. ASP.NET nimmt von diesem Paradigma Abschied und gestattet es Serversteuerelementen, ein clientseitiges Skript auszugeben, das es den Serversteuerelementen ermöglicht, die clientseitige Verarbeitung mit der serverseitigen Verarbeitung zu verbinden.

Der einfachste Fall clientseitiger Funktionalität liegt vor, wenn ein Webserversteuerelement einen Ereignishandler für ein clientseitiges Ereignis mit Hilfe der Attributes-Eigenschaft des Steuerelements darstellt. Das folgende Beispiel zeigt ein Steuerelement (ClientClickButton), das vom System.Web.UI.WebControls.Button-Webserversteuerelement abgeleitet ist und einen Ereignishandler für das clientseitige Click-Ereignis bereitstellt.

Hinweis   Ein Seitenentwickler kann leicht einen clientseitigen Ereignishandler bereitstellen, indem er auf die Attributes-Auflistung des Webserversteuerelements zurückgreift. Das Beispiel soll zeigen, wie ein Steuerelement selbst eine solche Funktionalität einkapseln kann. Eine Anleitung zum Erstellen dieses Beispiels finden Sie unter Beispiele für Serversteuerelemente.

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace CustomControls
{
public class ClientClickButton : Button
  {
   protected override void AddAttributesToRender(HtmlTextWriter writer) 
      {
          
      base.AddAttributesToRender(writer);   
      writer.AddAttribute("onclick", "alert('Thanks');");
    }

  }
}
[Visual Basic]

Option Explicit
Option Strict

Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace CustomControls
   Public Class ClientClickButton
      Inherits Button
      Protected Overrides Sub AddAttributesToRender(writer As HtmlTextWriter)
         MyBase.AddAttributesToRender(writer)
         writer.AddAttribute("onClick", "alert('Thanks');")
      End Sub
   End Class 
End Namespace

Die folgende Seite verwendet das benutzerdefinierte ClientClickButton-Steuerelement. Um zu überprüfen, ob das onClick-Attribut auf ClientClickButton auf dem Client dargestellt wird, rufen Sie die Seite im Browser auf, und zeigen Sie den Quellcode an.

<%@ Register TagPrefix="Custom" Namespace="CustomControls" Assembly = "CustomControls" %>
<html>
   <body>         
      <form  runat=server>        
       This button handles a client-side click event.             
   <Custom:ClientClickButton Id = "Button" BackColor = "Red"  runat=server/> <br> <br>                           
      </form>              
   </body>           
</html>

Das oben stehende Beispiel ist eine sehr einfache Demonstration clientseitiger Funktionalität. ASP.NET ermöglicht es einem Steuerelement, an weit komplexeren clientseitigen Szenarien teilzunehmen, wie sie beispielsweise in der folgenden Liste angeführt werden:

  • Bereitstellen einer clientseitigen Skriptbibliothek.
  • Ausgeben eines Skriptes am Anfang oder Ende einer Seite.
  • Sicherstellen, dass ein Skriptblock auf einer Seite nur einmal angezeigt wird (selbst wenn auf der Seite mehrere Instanzen des Steuerelements vorhanden sind).
  • Einem Steuerelement ermöglichen, einen Ereignishandler mit dem clientseitigen Submit-Ereignis des Formulars zu verknüpfen (wenn die Seite ein Formular enthält).
  • Hinzufügen des von einem Steuerelement dargestellten clientseitigen Elements zu einer für den Client deklarierten Arrayvariablen.

Diese Szenarien werden durch Methoden ermöglicht, die von der System.Web.UI.Page-Klasse offen gelegt werden und einem ASP.NET-Serversteuerelement über dessen Page-Eigenschaft zugänglich sind. Die folgende Tabelle zeigt die Methoden der Page-Klasse, die die clientseitige Funktionalität bereitstellen.

Methode Beschreibung Verwendung
Page.RegisterClientScriptBlock Ermöglicht es einem Steuerelement, einen Skriptblock auszugeben (der Inlineskripts enthält oder die Position einer Skriptdatei angibt). Der Skriptblock wird am Anfang der Seite dargestellt und wird (mit Hilfe eines Schlüssels) für die Seite registriert, so dass der Skriptblock nur einmal ausgegeben wird, selbst wenn es mehrere Instanzen des Steuerelements auf der Seite gibt.
Hinweis   Ein am Anfang der Seite ausgegebener Skriptblock wird auf einer ASP.NET-Seite als Clientskriptblock bezeichnet.
Verwenden Sie die Methode, um eine Skriptbibliothek einzuschließen oder einen Skriptblock darzustellen, der allgemeine (später auf der Seite aufgerufene) Funktionen enthält. Insbesondere Funktionen, die während der Darstellungsphase aufgerufen werden, sollten am Anfang der Seite stehen.
Page.RegisterStartupScript Ermöglicht es einem Steuerelement, einen Skriptblock auszugeben (der Inlineskripts enthält oder die Position einer Skriptdatei angibt). Der Skriptblock wird am Ende der Seite dargestellt und wird (mit Hilfe eines Schlüssels) für die Seite registriert, so dass der Skriptblock nur einmal ausgegeben wird, selbst wenn es mehrere Instanzen des Steuerelements auf der Seite gibt.
Hinweis   Ein am Ende der Seite ausgegebener Skriptblock wird auf einer ASP.NET-Seite als Startskriptblock bezeichnet.
Verwenden Sie die Methode, wenn Sie ein Skript ausgeben möchten, das Elemente auf der Seite aufruft oder beim Start ausgeführt werden muss. Da dieses Skript am Ende der Seite ausgegeben wird, ist das Vorhandensein der referenzierten Elemente vor Ausführung des Skriptes gewährleistet.
Page.RegisterArrayDeclaration Ermöglicht es einem Steuerelement, sich selbst zu einer clientseitigen Arrayvariablen mit einem bestimmten Namen hinzuzufügen. Der Arrayname wird (mit Hilfe eines Schlüssels) für die enthaltende Seite registriert, so dass in clientseitigen Skripts auf der Seite nur ein Array mit diesem Namen dargestellt wird. Verwenden Sie die Methode, wenn das durch das Steuerelement dargestellte Element zu einer Arrayvariablen im Clientskript gehören soll. Das Array ermöglicht es, Elemente desselben Typs zum leichteren Zugriff durch das Clientskript zu einer Gruppe zusammenzufassen. Beispielsweise fügen Bestätigungssteuerelemente sich selbst zu einem Array mit der Bezeichnung Page_Validators hinzu.
Page.RegisterOnSubmitStatement Verknüpft einen Ereignishandler mit dem clientseitigen Submit-Ereignis des Formulars und registriert es (mit Hilfe eines Schlüssels) mit der enthaltenden Seite. Der Handler wird als onSubmit-Attribut des Formularelements dargestellt. Durch die Registrierung des Handlers wird sichergestellt, dass nicht mehrere Instanzen des Steuerelements mehrere Handler ausgeben. Verwenden Sie die Methode, wenn bei Senden des Formulars ein clientseitiger Handler aufgerufen werden soll.
Hinweis   Sie können das Inlineskript direkt als Argument an diese Methode übergeben oder den Aufruf an einen Ereignishandler übergeben. Wenn Sie einen Aufruf an einen Ereignishandler übergeben, muss der Handler unabhängig in einem Skriptblock oder einer Skriptbibliothek definiert werden.
Page.IsClientScriptBlockRegistered Bestimmt, ob ein Clientskriptblock mit dem angegebenen Schlüssel mit der enthaltenden Seite registriert wird. Verwenden Sie den Rückgabewert dieser Methode, um festzustellen, ob Page.RegisterClientScriptBlock aufgerufen werden muss.
Page.IsStartupScriptRegistered Bestimmt, ob ein Startskriptblock mit dem angegebenen Schlüssel für die enthaltende Seite registriert wird. Verwenden Sie den Rückgabewert dieser Methode, um festzustellen, ob Page.RegisterStartupScript aufgerufen werden muss.
Page.RegisterHiddenField Ermöglicht es einem Serversteuerelement, ein ausgeblendetes Feld auf der enthaltenden Seite zu registrieren, das bei Darstellung der Seite ausgegeben wird. Auf dieses Feld kann über ein Clientskript zugegriffen werden. Wenn das Formular an den Server gesendet wird, steht dem Server das ausgeblendete Feld in Form von Postback-Daten zur Verfügung. Verwenden Sie die Methode, wenn ein Serversteuerelement eine ausgeblendete Variable senden muss, auf die im clientseitigen Skript zugegriffen werden kann. (Dies ist sinnvoll, wenn die Variable nicht als Attribut des Steuerelements dargestellt werden kann oder die clientseitige Verarbeitung eine Variable erfordert, die unabhängig vom Steuerelement ist.) Ein Beispiel hierfür finden Sie unter Beibehalten von clientseitigen Änderungen in anderen als Formularsteuerelementen.

Die Bestätigungssteuerelemente sind die einzigen ASP.NET-Serversteuerelemente, die die von ASP.NET bereitgestellten clientseitigen Features vollständig ausnutzen. Da die verschiedenen Browser kein übereinstimmendes Dokumentobjektmodell unterstützen, verwenden die meisten mit dem .NET Framework SDK gelieferten Serversteuerelemente clientseitige Skripts nur selten und höchstens für eine automatische Rücksendung. (Einzelheiten zur Verwendung von Skripts für Postback finden Sie unter Generieren von clientseitigen Skripts für Postback) Wenn Sie sich an einem bestimmten Browser oder an Browsern, die einem bestimmten Dokumentobjektmodell entsprechen, orientieren, können Sie clientseitige Skripts in Steuerelementen zur Bereitstellung einer umfassenderen clientseitigen Funktionalität und wenn möglich zur Begrenzung von Serververzögerungen verwenden.

Verwenden der von "Page" bereitgestellten Skripterstellungsmethoden

Das folgende Codefragment aus Beispiel für ein grundlegendes Bestätigungssteuerelement verwendet verschiedene der clientseitigen Skripterstellungsmethoden, die von der Page-Klasse offen gelegt werden. Die clientseitigen Skripterstellungsmethodenaufrufe sind im Codeausschnitt fett hervorgehoben. Der anfängliche Code im Ausschnitt definiert Zeichenfolgenkonstanten, die folgende Elemente enthalten: den Dateinamen der am Anfang der Seite einzuschließenden Skriptdatei, einen Schlüssel zum Registrieren eines Skriptblockes mit der Seite, einen am Ende der Seite einzuschließenden Skriptblock und eine Zeichenfolge mit Formatierungsinformationen.

private const string ValidatorFileName = "DomValidation.js";
// The key to register a script key. In this example, the same key
// is used for registering both the script at the top of the
// page (called the client-side script block) and the script
// that is rendered at the bottom of the page (called  startup
// script).
private const string ValidatorIncludeScriptKey = "DomValidatorIncludeScript";

// The script block that is rendered at the bottom of the page.
private const string ValidatorStartupScript = @"
<script language=""javascript"">
<!--

var Page_ValidationActive = false;
if (typeof(Page_DomValidationVer) == ""undefined"")
    alert(""{0}"");
else
    ValidatorOnLoad();

function ValidatorOnSubmit() {{
    if (Page_ValidationActive) {{
        return ValidatorCommonOnSubmit();
    }}
}}

// -->
</script>
        ";
// Provides formatting information for emitting the script 
// block at the top of the page. 
private const string IncludeScriptFormat = @"
<script language=""{0}"" src=""{1}{2}""></script>";

// This method is called from OnPrerender in the
// Base Validator Control Sample.
protected void RegisterValidatorCommonScript() {
            
   string location = null;
   if (!Page.IsClientScriptBlockRegistered(ValidatorIncludeScriptKey)) {            
      // Provide the location of the script file.     
       location = Page.Request.ApplicationPath + "/script/";

      // Create client script block.
      string includeScript = String.Format(IncludeScriptFormat, "javascript",  location, ValidatorFileName);
      Page.RegisterClientScriptBlock(ValidatorIncludeScriptKey, includeScript);   
   }
                  
  if (!Page.IsStartupScriptRegistered(ValidatorIncludeScriptKey)) {     
     if (location == null) location = Page.Request.ApplicationPath + "/script/";
      // Provide error message, which is localized.
       string missingScriptMessage = "Validation script is missing '" + location + ValidatorFileName + "'";
      // Create startup script block.
        string startupScript = String.Format(ValidatorStartupScript, new object [] {missingScriptMessage,});                                     
        Page.RegisterStartupScript(ValidatorIncludeScriptKey, startupScript);
   }              
  Page.RegisterOnSubmitStatement("ValidatorOnSubmit", "return ValidatorOnSubmit();");
}
[Visual Basic]
Private Const ValidatorFileName As String = "DomValidation.js"
' The key to register a script key. In this example, the same key
' is used for registering both the script at the top of the
' page (called the client-side script block) and the script
' that is rendered at the bottom of the page (called startup
' script).
Private Const ValidatorIncludeScriptKey As String = "DomValidatorIncludeScript"

' The script block that is rendered at the bottom of the page.
Private Const ValidatorStartupScript As String = ControlChars.CrLf & _
"<script language=""javascript"">" & ControlChars.CrLf & _
"<!--" & ControlChars.CrLf & _
"var Page_ValidationActive = false;" & ControlChars.CrLf & _
"if (typeof(Page_DomValidationVer) == ""undefined"")" & ControlChars.CrLf & _
"    alert(""{0}"");" & ControlChars.CrLf & _
"else" & ControlChars.CrLf & _
"    ValidatorOnLoad();" & ControlChars.CrLf & ControlChars.CrLf & _
"function ValidatorOnSubmit() {{" & ControlChars.CrLf & _
"    if (Page_ValidationActive) {{" & ControlChars.CrLf & _
"        return ValidatorCommonOnSubmit();" & ControlChars.CrLf & _
"    }}" & ControlChars.CrLf & _
"}}" & ControlChars.CrLf & _
"// -->" & ControlChars.CrLf & _
"</script>"
' Provides formatting information for emitting the script 
' block at the top of the page. 
Private Const IncludeScriptFormat As String = ControlChars.CrLf & _
"<script language=""{0}"" src=""{1}{2}""></script>"

' This method is called from OnPrerender in the
' Base Validator Control Sample.
Protected Sub RegisterValidatorCommonScript()
   Dim location As String = Nothing
   If Not Page.IsClientScriptBlockRegistered(ValidatorIncludeScriptKey) Then
      ' Provide the location of the script file.
      ' When using a script library, deployment can be 
      ' a problem because the runtime is
      ' tied to a specific version of the script file. 
      ' This sample takes the easy way out and insists that
      ' the file be placed in the /script subdirectory 
      ' of the application.
      ' In other cases, you should place it where it
      ' can be shared by multiple applications and is placed 
      ' in a separate directory so that different versions 
      ' of a control library can run side by side.
      ' The recommended pattern is to put script files in the 
      ' path /aspnet_client/<assembly name>/<assembly version>/".
      location = Page.Request.ApplicationPath + "/script/"
      
      ' Create the client script block.
      Dim includeScript As String = [String].Format(IncludeScriptFormat, "javascript", location, ValidatorFileName)
      Page.RegisterClientScriptBlock(ValidatorIncludeScriptKey, includeScript)
   End If
   
   If Not Page.IsStartupScriptRegistered(ValidatorIncludeScriptKey) Then
      
      If location Is Nothing Then
         location = Page.Request.ApplicationPath + "/script/"
      End If 
      ' Provide an error message, which is localized.
      Dim missingScriptMessage As String = "Validation script is missing '" & location & ValidatorFileName & "'"
      
      ' Create the startup script block.
      Dim startupScript As String = [String].Format(ValidatorStartupScript, New Object() {missingScriptMessage})
      Page.RegisterStartupScript(ValidatorIncludeScriptKey, startupScript)
   End If
   
   Page.RegisterOnSubmitStatement("ValidatorOnSubmit", "return ValidatorOnSubmit();")
End Sub

Das folgende Codefragment aus Beispiel für ein grundlegendes Bestätigungssteuerelement zeigt, wie die Page.RegisterArrayDeclaration-Methode (fett hervorgehoben) aufgerufen wird, durch die das vom Steuerelement dargestellte Element einer im Clientskript dargestellten Arrayvariablen (Page_Validators) hinzugefügt wird. Die Registrierung der Arrayvariablen mit der Seite (mit Hilfe des Schlüssels Page_Validators) stellt sicher, dass nur eine Variable mit diesem Namen auf der Seite erstellt wird.

// This method is called from Render in the
// Base Validator Control Sample.
protected virtual void RegisterValidatorDeclaration() {
   string element = "document.getElementById(\"" + ClientID + "\")";
   Page.RegisterArrayDeclaration("Page_Validators", element);
  }
[Visual Basic]
' This method is called from Render in the
' Base Validator Control Sample.
Protected Overridable Sub RegisterValidatorDeclaration()
   Dim element As String = "document.getElementById(""" & ClientID & """)"
   Page.RegisterArrayDeclaration("Page_Validators", element)
End Sub

Zugreifen auf ein Steuerelement im Clientskript

Die Control-Basisklasse legt eine Eigenschaft mit der Bezeichnung ClientID offen, die sie (in HTML) als ID-Attribut des dargestellten Elements darstellt. ASP.NET erstellt dynamisch die ClientID für das Steuerelement, und es ist gewährleistet, dass die ClientID jedes Steuerelements auf einer Seite eindeutig ist. Auf das Steuerelement (d. h., auf das vom Steuerelement dargestellte Element) kann somit auf dem Client zugegriffen werden, indem seine ID im Dokumentobjektmodell verwendet wird. Ein Steuerelement kann die ClientID darüber hinaus dazu verwenden, eindeutige Namen für alle zusätzlichen Elemente zu generieren, die es u. U. darstellt (z. B. ausgeblendete Felder).

Das Ausgeben des Wertes der ClientID in das Inlineskript (oder in Code in einer Skriptbibliothek) kann Probleme bereiten, da die ClientID an der richtigen Stelle in einer Zeichenfolgenvariablen eingefügt werden muss. Das folgende Beispiel verwendet Escapezeichen, um die ClientID in die Zeichenfolge einzufügen, die ein Inlineskript bildet.

   string element = "document.getElementById(\"" + ClientID + "\")";
   Page.RegisterArrayDeclaration("Page_Validators", element);
[Visual Basic]
   Dim element As String = "document.getElementById(""" & ClientID & """)"
   Page.RegisterArrayDeclaration("Page_Validators", element)

Sie können auch die überladenen Format-Methoden der String-Klasse verwenden, um ein clientseitiges Skript zu erstellen, das die ClientID verwendet. Weitere Informationen zum Formatieren finden Sie unter Formatierung von Typen.

Bereitstellen einer Skriptdatei

Der von einem skriptfähigen Steuerelement ausgegebene Skriptblock kann ein Inlineskript enthalten oder die Position einer Skriptdatei angeben. Beide Fälle wurden in dem zuvor in diesem Thema erläuterten Beispiel demonstriert. Wenn der Block die Position einer Skriptdatei angibt, müssen Sie die Skriptdatei so weitergeben, dass sie über andere Anwendungen verwendet werden kann und keine Versionskonflikte hervorruft. Im Beispiel befindet sich die Skriptdatei in einem Unterverzeichnis mit der Bezeichnung script im virtuellen Stammverzeichnis der Webanwendung.

      // Provides the location of the script file.    
       location = Page.Request.ApplicationPath + "/script/";
[Visual Basic]
      ' Provides the location of the script file.
      location = Page.Request.ApplicationPath & "/script/"

Diese Position funktioniert für das vorliegende Beispiel, die empfohlene Position einer Skriptdatei, die von mehreren Anwendungen verwendet werden soll, sieht jedoch folgendermaßen aus.

/aspnet_client/<your assembly name>/<your assembly version>/

Das Verzeichnis aspnet_client ist ein virtuelles Stammverzeichnis für Webanwendungen, das während der Installation des .NET Framework SDK oder von Visual Studio .NET auf dem Computer angelegt wird. Die im Lieferumfang von ASP.NET enthaltenen Skriptdateien befinden sich beispielsweise an folgender Position.

/aspnet_client/system_web/<version of SDK installed>

Wenn Sie mehrere SDK-Versionen installiert haben, finden Sie im Verzeichnis aspnet_client/system_web mehrere Unterverzeichnisse. Da eine Steuerelementbibliothek an eine spezielle Version der Skriptdatei gebunden ist, gestattet das empfohlene Weitergabemuster die parallele Ausführung verschiedener Versionen einer Steuerelementbibliothek.

Beachten Sie, dass für jede auf dem Computer gehostete Website ein aspnet_client-Verzeichnis angelegt wird. In der Regel hostet ein Server nur eine Website. Es ist jedoch mehr als eine Site zulässig, wobei das Vorhandensein mehrerer Sites zu mehreren Kopien des Verzeichnisses aspnet_client führt.

Überprüfen der Notwendigkeit der Skriptdarstellung

Ein skriptfähiges Steuerelement sollte den Consumern die Möglichkeit einräumen, die Darstellung clientseitiger Skripts zu aktivieren und zu deaktivieren. Die Webserver-Bestätigungssteuerelemente in ASP.NET legen eine boolesche Eigenschaft mit der Bezeichnung EnableClientScript offen, die bestimmt, ob das Steuerelement Skripts clientseitig darstellt. Sie können eine Eigenschaft mit dieser Funktionalität folgendermaßen definieren.

public bool EnableClientScript {
            get {
                object o = ViewState["EnableClientScript"];
                return((o == null) ? true : (bool)o);
            }
            set {
                ViewState["EnableClientScript"] = value;
            }
        }
[Visual Basic]
Public Property EnableClientScript() As Boolean
   Get
      Dim o As Object = ViewState("EnableClientScript")
      If o Is Nothing Then
         Return True
      Else
         Return CBool(o)
      End If
   End Get
   Set
      ViewState("EnableClientScript") = value
   End Set
End Property

Vor der Darstellung sollte ein skriptfähiges Steuerelement die Clientfunktionen überprüfen und außerdem feststellen, ob der Benutzer (Seitenentwickler) die Skripterstellung deaktiviert hat. Diese Überprüfungen finden in der Regel vor und während der Darstellungsphasen statt. Das folgende Codefragment aus Beispiel für ein grundlegendes Bestätigungssteuerelement führt die Überprüfungen vor der Darstellungsphase aus.

private boolean renderUplevel;
protected override void OnPreRender(EventArgs e) {
            base.OnPreRender(e);
            ...            
            // Work out uplevelness now.
            renderUplevel = DetermineRenderUplevel();

            if (renderUplevel) {
                // Helper method that creates script blocks
                // and registers them with the page.
                RegisterValidatorCommonScript();
            }
        }
        // Helper method to check whether script should be rendered.
        protected virtual bool DetermineRenderUplevel() {

            // Must be on a page.
            Page page = Page;
            if (page == null || page.Request == null) {
                return false;
            }

            // Check  whether the user has turned off scripting and
            // check browser capabilities. This custom control 
            // needs the W3C DOM level 1 for control manipulation
            // and at least ECMAScript 1.2.
            return (EnableClientScript 
                        && page.Request.Browser.W3CDomVersion.Major >= 1
                        && page.Request.Browser.EcmaScriptVersion.CompareTo(new Version(1, 2)) >= 0);
        }
[Visual Basic]
Private _renderUplevel As Boolean
Protected Overrides Sub OnPreRender(e As EventArgs)
   MyBase.OnPreRender(e)
   _preRenderCalled = True
   ' Force a re-query of properties for render.
   _propertiesChecked = False
   ' Work out uplevelness now.
   _renderUplevel = DetermineRenderUplevel()
   If _renderUplevel Then
      RegisterValidatorCommonScript()
   End If
End Sub
' Helper method to check whether script should be rendered.
Protected Overridable Function DetermineRenderUplevel() As Boolean
   ' Must be on a page.
   Dim page As Page = Page
   If page Is Nothing Or page.Request Is Nothing Then
      Return False
   End If
   
   ' Check the browser capabilities. 
   ' This is how you can get automatic fallback to server-side 
   ' behavior. These validation controls need 
   ' the W3C DOM level 1 for control manipulation
   ' and need at least ECMAScript 1.2 for the 
   ' regular expressions.
   Return EnableClientScript AndAlso _
         page.Request.Browser.W3CDomVersion.Major >= 1 AndAlso _
         page.Request.Browser.EcmaScriptVersion.CompareTo(New Version(1, 2)) >= 0
End Function

Informationen zu Überprüfungen während der Darstellungsphase finden Sie unter der Render-Methode im Beispiel für ein grundlegendes Bestätigungssteuerelement.

Clientseitige Skriptdarstellung

Wenn Sie die clientseitige Darstellung des vom Steuerelement eingekapselten Skriptes prüfen möchten, können Sie die unter Beispiele für Bestätigungssteuerelemente verfügbaren Beispiele kompilieren und weitergeben, die unter Testseite für Gültigkeitsprüfungsbeispiele verfügbare Seite aufrufen und den Quellcode der Seite im Browser anzeigen. Der HTML- und Skriptcode wird im folgenden Beispiel dargestellt. (Das von den Steuerelementen ausgegebene Skript ist hier fett hervorgehoben.) Die Seite verfügt über mehrere skriptausgebende Steuerelemente, die alle von dem unter Beispiel für ein grundlegendes Bestätigungssteuerelement beschriebenen Basissteuerelement abgeleitet sind. Daraus folgt, dass die Quelle einen Skriptcode beinhaltet, der in diesem Thema nicht erläutert wird. Beachten Sie bei der Anzeige des Quellcodes im Browser, dass der Verzeichnisname der Anwendung (hier samples) durch den Namen des virtuellen Verzeichnisses der Anwendung ersetzt wird.

<HTML>
  <HEAD>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<meta content="Microsoft Visual Studio .NET" name=GENERATOR>
<meta content=C# name=CODE_LANGUAGE>
<meta content="JavaScript (ECMAScript)" name=vs_defaultClientScript>
<meta content="Internet Explorer 3.02 / Navigator 3.0" name=vs_targetSchema>
<title>DOM Validators Test</title>
  </HEAD>
<body>
<form name="ValTest" method="post" action="valtest.aspx" language="javascript" onsubmit="return ValidatorOnSubmit();" id="ValTest">
<input type="hidden" name="__VIEWSTATE" value="dDwxOTkwOTM1MDA5O3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDEzPjs+O2w8dDw7bDxpPDE+O2k8Mz47aTw1PjtpPDc+Oz47bDx0PHA8cDxsPFRleHQ7PjtsPElFOz4+Oz47Oz47dDxwPHA8bDxUZXh0Oz47bDw1LjU7Pj47Pjs7Pjt0PHA8cDxsPFRleHQ7PjtsPDEuMjs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w8MS4wOz4+Oz47Oz47Pj47Pj47Pj47Pg==" />
   
<script language="javascript" src="/samples/script/DomValidation.js"></script>


<P><FONT face=Verdana size=5>DOM Validators Test</FONT></P>
<P>
<TABLE cellSpacing=1 cellPadding=1 width=602 border=0 height=131>
  <TR>
    <TD style="WIDTH: 82px">Name:</TD>
    <TD style="WIDTH: 164px"><input name="txtName" type="text" id="txtName" /></TD>
    <TD><span id="valRequired" controltovalidate="txtName" errormessage="Required." evaluationfunction="RequiredFieldValidatorEvaluateIsValid" initialvalue="" style="color:Red;visibility:hidden;">Required.</span></TD>
    </TR>
  <TR>
    <TD style="WIDTH: 82px">Postal&nbsp;Code:</TD>
    <TD style="WIDTH: 164px"><input name="txtPostcode" type="text" id="txtPostcode" /></TD>
    
    <TD><span id="valRegex" controltovalidate="txtPostcode" errormessage="Postcode must be 9999." evaluationfunction="RegularExpressionValidatorEvaluateIsValid" validationexpression="\d{4}" style="color:Red;visibility:hidden;">Postcode must be 9999.</span></TD>
    </TR>
    </TABLE></P>
<P>
<input type="submit" name="cmdSubmit" value="Submit" onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="cmdSubmit" />&nbsp;&nbsp; 
<input type="submit" name="cmdCancel" value="Cancel" id="cmdCancel" />
</P>
<div id="Panel1" style="border-color:#00C000;border-width:2px;border-style:Solid;height:55px;width:197px;">
   
<P>
Browser: <span id="lblBrowserName">IE</span><br>
Version: <span id="lblBrowserVersion">5.5</span><br>
Script Version: <span id="lblScriptVersion">1.2</span><br>
DOM Version: <span id="lblDomVersion">1.0</span><br>
Submit clicks: <span id="lblSubmitCount"> 0 </span><br>
Cancel clicks: <span id="lblCancelCount"> 0 </span><br>
</P>
</div>

<script language="javascript"><!--   var Page_Validators =  new Array(document.getElementById("valRequired"), document.getElementById("valRegex"));      // --></script><script language="javascript"><!--var Page_ValidationActive = false;if (typeof(Page_DomValidationVer) == "undefined")    alert("Validation script is missing '/samples/script/DomValidation.js'");else    ValidatorOnLoad();function ValidatorOnSubmit() {    if (Page_ValidationActive) {        return ValidatorCommonOnSubmit();    }}// --></script>

      </form>
   
  </body>
</HTML> 

Siehe auch

Beispiel für ein grundlegendes Bestätigungssteuerelement | Beispiele für Bestätigungssteuerelemente