我对ASP.NET很新,最近我发现了中继器。有些人使用他们,其他人不这样做,我不确定哪种解决方案是最佳做法。ASP.NET中继器问题(+关于最佳实践的问题)
从我所经历的事情来看,它使简单操作(显示列表)变得简单,但只要你想做更复杂的事情,复杂性就会爆炸,逻辑明智。
也许这是概念的只有我和我的理解差(这是很有可能的),所以这里的什么我试图做一个例子,我的问题:
问题:我想显示位于文件夹中的文件列表。
解决方案:
String fileDirectory = Server.MapPath("/public/uploaded_files/");
String[] files = Directory.GetFiles(fileDirectory);
repFiles.DataSource = files;
repFiles.DataBind();
和
<asp:Repeater ID="repFiles" runat="server" OnItemCommand="repFiles_ItemCommand" >
<ItemTemplate>
<a href="/public/uploaded_files/<%# System.IO.Path.GetFileName((string)Container.DataItem) %>" target="_blank">View in a new window</a>
<br />
</ItemTemplate>
</asp:Repeater>
这工作得很好。
新问题:我希望能够删除这些文件。
解决方案:我添加的项目模板删除链接:
<asp:LinkButton ID="lbFileDelete" runat="server" Text="delete" CommandName="delete" />
我赶上事件:
protected void repFiles_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "delete")
{
// ... blah
}
}
......然后呢?如何知道e.Item.DataItem为空(我运行调试器)时,如何获得我想要从此处移除的文件路径。
当我可以使用循环完成同样的事情时,我是否浪费了自己的时间使用中继器,而循环本来就是简单的,可能只是 - 可能优雅吗?
使用中继器优于其他解决方案的真正优势是什么?
同上......对生成的HTML的控制是Repeater的巨大好处。 – JasonS 2009-05-28 16:16:10