私は 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 が null であることを知って、ここから削除するファイル パスを取得するにはどうすればよいですか (デバッガーを実行しました)。
ループを使用して同じことを行うことができたのに、リピーターを使用して時間を無駄にしましたか?
他のソリューションよりもリピーターを使用する本当の利点は何ですか?