2009-07-14 13 views
4

Ich habe versucht, deklarative Daten gebunden ASP.NET und kämpfen mit der "Magie", die hinter den Kulissen geht.Eval mit deklarativen Daten gebunden ASP.NET

Wie bekomme ich das in ASP.Net 2.0 zu arbeiten. Dies ist innerhalb einer Datenbindung FormView Kontrolle.

<asp:Label ID="RecipientsLabel" runat="server" 
    Text='<%# String.Join("; ", Eval("HtmlEncodedRecipients")) %>'> 
</asp:Label> 

Hinweis: HtmlEncodedRecipients ist eine List<string> Eigenschaft.

ich diesen Fehler:

The best overloaded method match for 'string.Join(string, string[])' has some invalid arguments

Antwort

3

Versuchen Eval("HtmlEncodedRecipients") zu einem List Casting und .ToArray() darauf aufrufen.

+0

Ein schmutziger Hack; Ich mag es :) – Janie

+0

Danke Joel. Ich hatte den einen oder anderen versucht, aber nicht beide gleichzeitig. Folgendes funktioniert für mich. Nicht gerade elegant, aber es funktioniert. Korey

4

Ich habe festgestellt, das Leben ist viel einfacher, wenn Sie nur das DataItem auf den Typ, den Sie erwarten, zu übertragen. Dadurch wird Intellisense aktiviert, sodass Sie sehen können, was vor sich geht.

((MyObject)Container.DataItem).HtmlEncodedRecipients 
4

Wenn es eine Liste gibt, dann ist es das, was Sie wollen:

String.Join("; ", ((List<string>)Eval("HtmlEncodedRecipients")).ToArray()) 

(Das ist daran zu erinnern ist, dass, wenn Sie selbst eine Eval in einem Databinding-String setzen, wird es mit einem kommen .. „nett“ Wert zu zeigen, aber wenn man es in einem Ausdruck verwendet, gibt es Typ-Objekt, so dass Sie sie werfen müssen

, dass ein bisschen zu knorrig zu werden immer inline zu setzen, obwohl, dies so tun:

Text = ' <% # ConvertRecipients (Eval ("HtmlEncodedRecipients"))%> ">

und in Ihrem Code-Behind

string[] ConvertRecipients(object recipientObject) 
{ 
    if(recipientObject is List<string>) 
    { 
     ... 
+0

er will eine string, nicht eine string [] als ergebnis, aber sonst ist das was ich gesagt habe. Finden Sie es nicht heraus, wenn Ihr Parameter List ist? –

+0

Das ist schöner, und was ich am Ende benutzt habe. Ich musste die Methode veröffentlichen. Ich dachte, der Code-Behind wäre eine lokale Referenz. Es ist auch eine Zeichenfolge, keine Zeichenfolge []. – Korey

Verwandte Themen