2016-04-10 3 views
0

Wenn ich Schleife durch meine Daten in C# Ich habe die unten zu verwenden, um den Wert zu erhalten:Verwenden Sie die Methode Wert in asp zu bekommen: Repeater

foreach (var item in documentQuery) 
{ 
    string value = item.getproperty("title"); 
    //value = "hello world" 
} 

Aber wenn ich will, um die Ergebnisse zu einer asp binden: Repeater in einer ASPX-Seite Wie würde ich diese getproperty-Methode in ItemTemplate nennen? Denn wenn ich einfach gehe <% # Eval ("Titel")%> gibt es einen Fehler ...

Antwort

0

Eval() ist eine Abkürzung, um die Bindung zu vereinfachen. Um etwas Komplexeres zu tun, können Sie es nicht verwenden.

Ich glaube, Sie etwas tun müssen, wie:

<%# Container.DataItem.getproperty("title")) %> 

Oder Sie könnten Container.DataItem Ihren spezifischen Typ von Maschine zu werfen haben:

<%# (Container.DataItem as XXXXXXX).getproperty("title")) %> 

wo XXXXXXX ist unabhängig von der Art Ihrer Artikel ist.

+0

<% # (Container.DataItem als XXXXXXX) .getproperty ("title"))%> das funktioniert! Aber da ich im Begriff bin, viele Werte zu verwenden, denke ich daran, etwas sauberer zu machen. Was, wenn ich ondatabound verwendete und getproperty im Codebehind verwendete, um an ein asp: literal zu binden oder würde das als schlechte Praxis betrachtet? – CerIs

+0

Könnte funktionieren, aber was ich tun würde, ist mit LINQ das Ergebnis von documentQuery in einen anonymen Typ auszuwählen und nur daran zu binden, so etwas wie: repeater.DataSource = documentQuery.Select (x => new {title = x.getproperty ("Titel") }); Wenn du es so machst, verschwindet dein ursprüngliches Problem und du kannst einfach Eval ("title") tun, wie du ursprünglich versucht hast und es sollte funktionieren. – bpursley

Verwandte Themen