Ich habe eine IEnumerable-Liste von Rennfahrern erstellt, die LINQ aus einem String-Array wie folgt verwenden:
%Vor%Ich behalte es einfach für den Moment.
Ich binde es dann an eine ASP.NET GridView wie folgt:
%Vor%Das funktioniert gut. Jetzt möchte ich die gleiche Ausgabe (Ergebnis) nehmen und sie an einen Repeater binden, aber egal, was ich versuche, ich kann den Repeater nicht zum Laufen bringen und ich denke, ich vermisse etwas grundlegendes Verständnis von LINQ und wie es mit ASP.NET funktioniert .
Unten ist die vollständige Aspx-Seite, um zu zeigen, wo ich bisher hingekommen bin. Kann jemand (sanft wenn möglich) mich zurück auf den Weg führen?
%Vor%Ich verwende den folgenden Code, um das Ergebnis an den Repeater zu binden:
%Vor%Ich erhalte den folgenden Fehler, wenn ich versuche, die Seite mit dem Repeater in:
auszuführenAusnahmedetails: System.Web.HttpException: DataBinding: 'System.String' enthält keine Eigenschaft mit dem Namen 'Treiber'.
Sie erhalten eine Aufzählung von Strings ohne Namen zurück. Wenn Sie den Treiber für den Eigenschaftennamen verwenden möchten, können Sie einen anonymen Typ festlegen und sagen:
%Vor%machen Sie dann die Datenbindung.
Ich glaube, Sie können auch Eval(".")
, um das Objekt selbst und nicht eine Eigenschaft zu bewerten. Wie mehrere Personen unten gesagt haben, können Sie <%# Container.DataItem %>
verwenden.
probiere
aus %Vor%Das Eval sucht nach einer Eigenschaft mit dem Namen Treiber, aber Sie haben den aktuellen Treibernamen als Zeichenfolge. Es wäre, als würde man "drivername" .DriverName aufrufen. Die Aufzählung Ihrer Sammlung arbeitet mit den tatsächlichen Elementen. Wenn Sie tatsächlich eine Sammlung wie IList-Treiber hätten, dann würde das funktionieren.
Da eine Zeichenfolge keine Eigenschaft namens "Treiber" hat und Sie eine Liste von Zeichenfolgen verwenden, funktioniert dies nicht. Ersetzen Sie die Eval-Anweisung durch Container.DataItem