Wenn Sie mit klassischem ASP vertraut sind, sind Sie mit der Datenbindungssyntax in ASP.NET vertraut, auch wenn die Funktionen nicht identisch sind. Der Ausdruck der Datenbindung ist der Code zwischen <%# und %> in der ASPX-Datei. Es ermöglicht die Bindung von Daten an einen Controller sowie die Bindung von Eigenschaften, Ausdrücken und Ergebnissen von Methodenaufrufen auf der Seite an den Controller. Obwohl diese Funktion einfach zu verwenden ist, führt sie manchmal zu Verwirrung bei der Bestimmung, welche Inhalte gebunden werden dürfen und ob sie verwendet wurden.
Datenbindungselemente
Wenn die DataBind-Methode in ASP.NET der Seite aufgerufen wird, wird der Datenbindungsausdruck mit den Eigenschaften, Serversteuerelementeigenschaften und Datenquellen in ASP.NET verknüpft. Sie können einen Ausdruck auf der numerischen Seite eines Attributwert/Wert-Paares platzieren, wenn Sie eine servergesteuerte Registerkarte oder an einer beliebigen Stelle auf der Seite öffnen. Alle Datenbindungsausdrücke werden, unabhängig davon, wo sie platziert werden, in <%#- und %>-Zeichen eingeschlossen.
Bei Verwendung eines Datencontrollers (Repeater, DataGrid usw.) ist der Parameter des Ausdrucks normalerweise der Spaltenname der Datenquelle. Unabhängig davon kann jeder gültige Ausdruck verwendet werden, solange er einen Wert zurückgibt. Ebenso kann dieselbe Syntax für externe Listensteuerelemente verwendet werden. Dazu gehört das Anzeigen von Werten auf der Seite oder das Zusammenstellen von Controller-Eigenschaften.
Container.DataItem ist ein Laufzeitalias für DataItem für ein bestimmtes Element. Es ordnet ein einzelnes Element aus einer Datenquelle zu, beispielsweise eine Zeile aus einer Datenabfrage oder ein einzelnes Element aus einem Vektor. Der tatsächliche Datentyp des DataItem wird durch die Datenquelle bestimmt. Daher ist das DataItem beim Umgang mit einem Vektor aus Ganzzahlen auch eine Ganzzahl.
Die folgende Liste gibt einen Überblick über einige VB.NET-Syntaxsituationen:
<%# Container.DataItem %> – gibt einen Zeichenfolgenvektor zurück.
<%# Container.DataItem("expression") %> – gibt ein bestimmtes Element im DataView-Containerfeld
<
zurück%# Container.DataItem.PropertyName %> – gibt den Eigenschaftswert einer bestimmten Zeichenfolge in der Datenquelle zurück
<%# CStr(Container.DataItem.PropertyName) %> – gibt den Eigenschaftswert zurück und konvertiert ihn in eine Zeichenfolgenform,
wenn Bei Verwendung von C# ist die Syntax etwas anders. Die folgende Liste enthält den C#-Code, der der obigen Liste entspricht. Beachten Sie, dass die grundlegende Syntax dieselbe ist, es jedoch Änderungen bei der Konvertierung der zurückgegebenen Attributwerte und Datentypen gibt.
<%# Container.DataItem %>
<%# ((DataRowView)Container.DataItem)["PropertyName"] %>
<%# ((ObjectType)Container.DataItem).PropertyName %>
<%# ((ObjectType)Container. DataItem).PropertyName.ToString() %>
Die Syntax ist konsistent, wenn auf Seiteneigenschaften und -methoden eingegriffen wird. Solange ein String-Wert zurückgegeben wird, ist die Syntax genau dieselbe. Die folgende Liste enthält ein Beispiel:
<%# propertyName %>--Gibt Eigenschaftswerte auf Seitenebene zurück
<%# (objectName.PropertyName) %>--Objekteigenschaftswerte auf Seitenebene anzeigen
<%# MethodName() %>--Display page method returns Values
Verwenden Sie die folgende Syntax, um einen einzelnen Wert auf der Seite zu verwenden (Werte, die von Eigenschaften und Methoden usw. zurückgegeben werden).
<%= Value %>
Der C#-Code in Listing A veranschaulicht Daten Bindung in einem ASP.NET-Webformular. Es wählt den Namen und die Telefonnummer des Mitarbeiters aus der SQL Server Northwind Employees-Tabelle aus. Der Abfragewert wird über den ASP.NET Repeater-Controller angezeigt. Spaltenwerte werden per Datenbindung eingefügt. Der Formulartitel der Tabelle wird durch einen Methodenaufruf zusammengestellt. Darüber hinaus wird die ItemIndex-Eigenschaft von Dataitem verwendet, um die Anzahl der Zeilen anzuzeigen. Die ItemIndex-Eigenschaft beginnt bei 0 und wird zwischen den Anzeigen um 1 erhöht.
Listing B enthält den entsprechenden VB.NET-Code. Der Hauptunterschied besteht darin, dass VB.NET Klammern und C# eckige Klammern verwendet. Und Zeilenumwandlung ist in VB.NET nicht erforderlich.
Die Verwendung von Contain.DataItem ist etwas mühsam, da Sie jederzeit auf Datentypen und Datentypkonvertierung achten müssen. Microsoft stellt die DataBinder-Klasse bereit, die die Entwicklung weiter vereinfachen kann.
Die Verwendung der DataBinder
-Klasse DataBinder wird in der Microsoft-Dokumentation (MSDN) ausführlich erläutert. Mit dieser Methode kann der RAD-Designer auf einfache Weise eine geparste Datenbindungssyntax generieren. Diese Methode kann auch in Web Forms-Seitendeklarationen verwendet werden, um die Zuordnung von einem Typ zu einem anderen zu vereinfachen.
Wenn Sie Datenwerte in einer ASP.NET-Seite verwenden, können Sie die Eval-Methode der DataBinder-Klasse verwenden, damit .NET die schwere Arbeit übernimmt. Die Eval-Methode akzeptiert das zuvor überschriebene Container.DataItem-Objekt; sie berechnet die detaillierten Daten für jedes angegebene Feld im Ausdruck und zeigt sie an. Die Syntax lautet wie folgt:
DataBinder.Eval(Container.DataItem, „Feldname“, „optionale Formatierung“)
Mit dieser Syntax können Sie das erste Beispiel mit DataBinder.Eval neu schreiben. Den C#-Code finden Sie in Listing C. Listing D enthält VB.NET-äquivalenten Code.
DataBinder.Eval ist sehr leistungsfähig, wenn es darum geht, Arbeit an das System weiterzuleiten. Beachten Sie jedoch auch, dass der Zeit- und Ressourcenaufwand für das Auffinden von Elementen und das Bestimmen von Objekt-/Datentypen durch das System hoch ist.
Die Datenbindung
mit umfangreichen Optionen
macht das Einfügen von Daten in ASP.NET-Seiten relativ einfach.Es stehen viele verschiedene Datenbindungsoptionen zur Auswahl, darunter: Daten an einen Controller binden und festlegen, wie sie angezeigt werden, oder Daten an einen auf der ASP.NET-Seite deklarierten Controller binden. Letztlich kommt es auf Ihre Vorlieben an, aber viele Optionen zu haben, ist letztendlich eine gute Sache.
Tony Patton begann seine Karriere als Softwareentwickler und wurde in Java, VB, Lotus und XML zertifiziert.