在datarepeater控件中执行此操作的正确方法是什么?
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<strong><%= Eval("FullName") %></strong><br />
<p>
<%= Eval("Summary") %>
</p>
</ItemTemplate>
</asp:Repeater>
获取错误数据绑定方法(如Eval(),XPath()和Bind())只能在数据绑定控件的上下文中使用。
我想写出FullName和Summary。但我不想嵌套子控制。 是Repsonse.Write最好的方法吗?
更新: 不确定这是否有必要,但我能够解决的唯一方法是使用控件
答案 0 :(得分:3)
转发器需要一个数据源,分配如下:
public class Foo
{
public string FullName { get;set; }
public string Summary {get;set; }
public Foo(fullName,summary)
{
FullName=fullName;
Summary=summary;
}
}
/// elsewhere...
List<Foo> myFoos = new List<Foo>();
myFoos.Add(new Foo("Alice","Some chick"));
myFoos.Add(new Foo("Bob","Some guy"));
myFoos.Add(new Foo("Charlie","Indeterminate"));
Repeater1.DataSource = myFoos;
Repeater1.DataBind();
正如此示例所示,您的数据源可以是实现IEnumerable的任何内容 - 列表是我的最爱,但C#中的大多数集合都属于此类别。您的数据源不必须来自数据库或特定的任何地方。
您不必使用response.write或子控件。 (无论如何,服务器控件在转发器内部无效)。您可以尝试替换
<%=Eval("...
与
<%#Eval("...
我不确定区别,但大多数例子都使用了第二种形式。
答案 1 :(得分:0)
您可以随时尝试以下操作:
<%# DataBinder.Eval(Container.DataItem, "FullName") %>