我有一些带有asp:Repeater
对象的asp代码。
我熟悉使用<%# Eval("field")
将dataitem.field打印到HTML代码。但是,如果我想将Eval("field")
的结果保存到字符串文字中以便进一步处理,我该怎么办?
更新:我觉得我因为没有更具体而道歉。作为第一个回答者suggetss,我打算在ItemTemplate
中使用结果。但是,当前记录的字段不是字符串呢?如果我有一些包含各种奇怪的 * *的复杂类型,并且我想引用项目模板中的字段而不是字符串,该怎么办?
答案 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()
的返回值转换为您期望的任何类型?