Freigeben über


Syntax für Datenbindungsausdrücke

Datenbindungsausdrücke erstellen Bindungen zwischen einer Eigenschaft auf einer ASP.NET-Seite, einschließlich einer Serversteuerelementeigenschaft, und einer Datenquelle, wenn auf der Seite die DataBind-Methode aufgerufen wird. Sie können Datenbindungsausdrücke auf Wertseite eines Attribut-Wert-Paares im öffnenden Tag eines Serversteuerelements oder an einer anderen Stelle auf der Seite einfügen.

<tagprefix:tagname property="<%# data-binding expression %>"runat="server" />

oder

literal text<%#data-bindingexpression%>

Attribute

  • property
    Die Eigenschaft des Steuerelements, für die die Datenbindung deklariert wird.
  • data-binding expression
    Ein beliebiger Ausdruck, der den Anforderungen entspricht, die im folgenden Abschnitt Hinweise erläutert werden.

Hinweise

Alle Datenbindungsausdrücke müssen unabhängig von der Stelle, an der Sie diese platzieren, zwischen dem <%#-Zeichen und dem %>-Zeichen eingefügt werden.

ASP.NET unterstützt ein hierarchisches Datenbindungsmodell, das assoziative Bindungen zwischen Eigenschaften von Serversteuerelementen und übergeordneten Datenquellen unterstützt. Jede Eigenschaft eines Serversteuerelements kann mit einem öffentlichen Feld oder einer Eigenschaft auf der entsprechenden Seite oder im direkten Namenscontainer des Serversteuerelements datengebunden werden.

Verwenden von "DataBinder.Eval"

ASP.NET verfügt über die statische DataBinder.Eval-Methode, die spät gebundene Datenbindungsausdrücke auswertet und das Ergebnis bei Bedarf als Zeichenfolge formatiert. Diese Methode verringert den Aufwand für explizite Umwandlungen von Werten in den gewünschten Datentyp.

Im folgenden Codefragment wird z. B. eine ganze Zahl als Währungszeichenfolge angezeigt. Bei Verwendung der Standard-Datenbindungssyntax von ASP.NET muss zunächst der Typ der Datenzeile umgewandelt werden, damit das Datenfeld IntegerValue abgerufen werden kann. Dieses wird anschließend als Argument an die String.Format-Methode übergeben:

<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %> 

Im Gegensatz zu dieser Syntax verfügt DataBinder.Eval nur über drei Argumente: den Namenscontainer für das Datenelement, den Namen des Datenfeldes sowie eine Formatzeichenfolge. In aus Vorlagen gebildeten Listen wie der DataList-Klasse, der DataGrid-Klasse oder der Repeater-Klasse ist der Namenscontainer immer Container.DataItem.

<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %> 

Das Argument für die Formatzeichenfolge ist optional. Wenn es nicht verwendet wird, gibt DataBinder.Eval einen Wert vom Typ Object zurück, wie im folgenden Beispiel dargestellt:

<%# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %>

DataBinder.Eval ist besonders bei der Datenbindung von Steuerelementen in einer aus Vorlagen gebildeten Liste sinnvoll, da meist sowohl die Datenzeile als auch das Datenfeld umgewandelt werden müssen.

Beispiel

Das folgende Beispiel veranschaulicht die Datenbindung mit Eigenschaften in einem ASP.NET-Serversteuerelement. Wenn ein Benutzer einen Zustand im DropDownList-Webserversteuerelement auswählt, wird das Label-Webserversteuerelement mit dem ausgewählten Element in der Liste datengebunden.

<html>
<head>
    <script language="C#" runat="server">
        void SubmitBtn_Click(Object sender, EventArgs e) {
          // Rather than explictly pull out the variable from the StateList
          // and then manipulate a label control, just call Page.DataBind.
          // This will evaluate any <%# %> expressions within the page.   
          Page.DataBind();
        }
    </script>
</head>
<body>

    <h3><font face="Verdana">Data binding to a property of another server control</font></h3>
    <form runat="server">
        <asp:DropDownList id="StateList" runat="server">
          <asp:ListItem>CA</asp:ListItem>
          <asp:ListItem>IN</asp:ListItem>
          <asp:ListItem>KS</asp:ListItem>
          <asp:ListItem>MD</asp:ListItem>
          <asp:ListItem>MI</asp:ListItem>
          <asp:ListItem>OR</asp:ListItem>
          <asp:ListItem>TN</asp:ListItem>
          <asp:ListItem>UT</asp:ListItem>
        </asp:DropDownList>       
        <asp:button Text="Submit" OnClick="SubmitBtn_Click" runat="server"/>        
        <p>     
        Selected State: <asp:label text='<%# StateList.SelectedItem.Text %>' runat="server"/>     
    </form>
</body>
</html>
[Visual Basic]
<html>
<head>
    <script language="VB" runat="server">
         Sub SubmitBtn_Click(sender As Object, e As EventArgs)
            ' Rather than explictly pull out the variable from the StateList
            ' and then manipulate a label control, just call Page.DataBind.
            ' This will evaluate any <%# %> expressions within the page.   
            Page.DataBind()
         End Sub
    </script>
</head>
<body>

    <h3><font face="Verdana">Data binding to a property of another server control</font></h3>
    <form runat="server">
        <asp:DropDownList id="StateList" runat="server">
          <asp:ListItem>CA</asp:ListItem>
          <asp:ListItem>IN</asp:ListItem>
          <asp:ListItem>KS</asp:ListItem>
          <asp:ListItem>MD</asp:ListItem>
          <asp:ListItem>MI</asp:ListItem>
          <asp:ListItem>OR</asp:ListItem>
          <asp:ListItem>TN</asp:ListItem>
          <asp:ListItem>UT</asp:ListItem>
        </asp:DropDownList>       
        <asp:button Text="Submit" OnClick="SubmitBtn_Click" runat="server"/>        
        <p>     
        Selected State: <asp:label text='<%# StateList.SelectedItem.Text %>' runat="server"/>     
    </form>
</body>
</html>

Siehe auch

Einführung in Web Forms-Seiten | Web Forms-Syntax