2009-07-14 6 views
4

J'ai essayé d'utiliser des données déclaratives liées à ASP.NET, et je me bats avec la "magie" qui se passe derrière la scène.Eval avec des données déclaratives liées ASP.NET

Comment faire pour que cela fonctionne dans ASP.Net 2.0. Ceci est à l'intérieur d'un contrôle FormView lié aux données.

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

Note: HtmlEncodedRecipients est une propriété List<string>.

Je reçois cette erreur:

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

Répondre

3

Essayez coulée Eval("HtmlEncodedRecipients") à un List et appelant .ToArray() là-dessus.

+0

Une bidouille; J'aime ça :) – Janie

+0

Merci Joel. J'avais essayé l'un ou l'autre, mais pas les deux en même temps. Ce qui suit pour moi. Pas vraiment élégant, mais ça marche. Korey

4

J'ai trouvé que la vie est beaucoup plus facile si vous venez de lancer le DataItem au type que vous attendez. Cela permet à intellisense de vous aider à voir ce qui se passe.

((MyObject)Container.DataItem).HtmlEncodedRecipients 
4

Si c'est une liste alors c'est ce que vous voulez:

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

(La chose à retenir est que si vous mettez un Eval dans une chaîne de liaison de données par lui-même, il viendra avec un .. valeur « belle » pour montrer Mais si vous l'utilisez dans une expression, elle renvoie objet de type, de sorte que vous devez jeter

qui devient un peu trop noueux pour mettre en ligne, cependant, alors faites ceci:

Texte = ' <% # ConvertRecipients (eval ("HtmlEncodedRecipients"))%> '>

et dans votre codebehind

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

il veut une chaîne, pas une chaîne [] comme résultat, mais sinon c'est ce que je disais. ne comprendra-t-il pas pour vous si votre paramètre est Liste ? –

+0

C'est plus beau, et ce que j'ai fini par utiliser. J'ai dû rendre la méthode publique. Je pensais que le code-behind serait une référence locale. C'est aussi une chaîne, pas une chaîne []. – Korey

Questions connexes