Take the 2-minute tour ×

I have some asp code with an asp:Repeater object.

I am familiar with using <%# Eval("field") to print dataitem.field to the HTML code. However, what can I do if I want to get the result of Eval("field") saved to a string literal for further processing?

Update: I feel like I owe an apology for not being more specific. As the first answerer suggetss, I am planning to use the result in an ItemTemplate. However, what about field of the current record that are not strings? What if I have some complex type that contains all sorts of weird ** and I want to refer to the fields in my item template, and not as strings?

share|improve this question
I can't believe that there is no answer to this except to try to do what I'm doing some other way. –  Daniel Allen Langdon Nov 9 '10 at 21:16
add comment

5 Answers

I'm not sure if this is what you're asking for, but if you want to do an Eval in a context outside of .aspx markup, you can use the DataBinder.Eval method directly in your code.

share|improve this answer
add comment

You should use Server Control for this:

<asp:Repeater ID="aRepeater" runat="server">
        <asp:HiddenField ID="SomeHiddenField" runat="server" value='<%# Eval("FieldID") %>' />

You can retrieve the value of "FieldID" later by accessing the "Value" property of the HiddenField control.

share|improve this answer
add comment

Another way to approach this is to use a specialized view class which is either built from the data you're using, or is simply a wrapper around your class. Deal with the 'complex' operations in your C# code and expose the result as a property on the class you pass to your aspx file.

share|improve this answer
add comment

As Arief said, you need to use a server control for this.

To access the data in the code behind, you need to loop through the repeater items, find the control, and then access the value.

So, assuming you have a repeater with a literal in the item template (ltlFieldId), here is how you can access the value stored in the literal:

For Each ri As RepeaterItem In MyRepeater.Items
   Dim ltlFieldId As Literal = ri.FindControl("ltlFieldId")
   Dim FieldId As Integer = CType(ltlFieldId.Text, Integer)
share|improve this answer
add comment

Have you tried casting the return of Eval() to whatever type you're expecting?

share|improve this answer
add comment

Your Answer


