如何在我的C#代码中获得#Eval(“X”)的结果?

时间:2010-11-09 20:30:30

标签: c# asp.net

我有一些带有asp:Repeater对象的asp代码。

我熟悉使用<%# Eval("field")将dataitem.field打印到HTML代码。但是,如果我想将Eval("field")的结果保存到字符串文字中以便进一步处理,我该怎么办?

更新:我觉得我因为没有更具体而道歉。作为第一个回答者suggetss,我打算在ItemTemplate中使用结果。但是,当前记录的字段不是字符串呢?如果我有一些包含各种奇怪的 * *的复杂类型,并且我想引用项目模板中的字段而不是字符串,该怎么办?

5 个答案:

答案 0 :(得分:2)

我不确定这是否是您所要求的,但如果您想在.aspx标记之外的上下文中执行Eval,则可以直接使用DataBinder.Eval方法在你的代码中。

答案 1 :(得分:1)

您应该使用服务器控制:

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

您可以稍后通过访问HiddenField控件的“Value”属性来检索“FieldID”的值。

答案 2 :(得分:1)

另一种解决方法是使用一个专门的视图类,它可以根据您正在使用的数据构建,也可以只是您的类的包装器。处理C#代码中的“复杂”操作,并将结果公开为传递给aspx文件的类的属性。

答案 3 :(得分:1)

正如Arief所说,你需要使用服务器控件。

要访问后面代码中的数据,您需要遍历转发器项,找到控件,然后访问该值。

因此,假设您在项目模板(ltlFieldId)中有一个带文字的转发器,您可以通过以下方式访问存储在文字中的值:

For Each ri As RepeaterItem In MyRepeater.Items
   Dim ltlFieldId As Literal = ri.FindControl("ltlFieldId")
   Dim FieldId As Integer = CType(ltlFieldId.Text, Integer)
Next

答案 4 :(得分:0)

米,
您是否尝试将Eval()的返回值转换为您期望的任何类型?