現在、機能しているこのコードを使用していますが、Image.aspx が画像と同じディレクトリにない場合、404 のように機能しません。image.aspx をすべての画像に普遍的に使用し、それを保持したいと思います。可能であればトップディレクトリに。
リストビュー ページ:
<div class="datapager">
<asp:DataPager ID="DataPager1" runat="server" PageSize="20"
PagedControlID="Listview1" QueryStringField="PageID">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button"
ShowFirstPageButton="False"
ShowNextPageButton="False" ShowPreviousPageButton="True"
ShowLastPageButton="False" ButtonCssClass="PagerField" PreviousPageText="«
Previous" />
<asp:NumericPagerField CurrentPageLabelCssClass="NumericPagerField"
ButtonCount="10" NextPageText="More" PreviousPageText="More" />
<asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="False"
ShowNextPageButton="True" ShowPreviousPageButton="False"
ShowFirstPageButton="False" ButtonCssClass="PagerField" NextPageText="Next»"/>
</Fields>
</asp:DataPager>
</div>
<div class="topadcell">Amazon Ad</div>
<asp:listview ID="Listview1" runat="server"
onpagepropertieschanging="Listview1_PagePropertiesChanging" >
<ItemTemplate>
<li>
<asp:HyperLink ID="lnkImage" Tooltip='<%# Eval("Name") %>' runat="server"
NavigateUrl='<%# Eval("Name","~/Image.aspx?Name=/Images/yeah/a/directory/{0}")%>' >
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Name", "~/Images/yeah/a
/directory/{0}") %> ' alt='<%# Eval("Name") %>'
Width="125" CssClass="picborder">
</asp:Image></asp:HyperLink></li>
</ItemTemplate>
<LayoutTemplate>
<ul ID="itemPlaceholderContainer" runat="server" class="gallery" >
<li id="itemPlaceholder" runat="server" ></li>
</ul>
</LayoutTemplate>
</asp:listview>
<div class="datapager">
<asp:DataPager ID="DataPager2" runat="server" PageSize="20"
PagedControlID="Listview1" QueryStringField="PageID">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button"
ShowFirstPageButton="False"
ShowNextPageButton="False" ShowPreviousPageButton="True"
ShowLastPageButton="False" ButtonCssClass="PagerField" PreviousPageText="«
Previous"/>
<asp:NumericPagerField CurrentPageLabelCssClass="NumericPagerField"
ButtonCount="10" NextPageText="More" PreviousPageText="More" />
<asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="False"
ShowNextPageButton="True" ShowPreviousPageButton="False"
ShowFirstPageButton="False" ButtonCssClass="PagerField" NextPageText="Next»"/>
</Fields>
</asp:DataPager>
.cs ページは次のとおりです。
private void BindListImages()
{
int i = 0;
DirectoryInfo dir = new DirectoryInfo(MapPath("~/Images/yeah/a/directory/"));
FileInfo[] file = dir.GetFiles();
System.Collections.ArrayList list = new System.Collections.ArrayList();
foreach (FileInfo file2 in file)
{
if (i <= 6000)
{
if (file2.Extension == ".jpg" || file2.Extension == ".jpeg" ||
file2.Extension == ".JPG" || file2.Extension == ".gif")
{
list.Add(file2);
i++;
}
}
}
Listview1.DataSource = list;
Listview1.DataBind();
}
public class Person
{
public string Name { get; set; }
}
protected void Listview1_PagePropertiesChanging(object sender,
PagePropertiesChangingEventArgs e)
{
DataPager1.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
DataPager2.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
BindListImages();
}
protected void Page_Init(object sender, EventArgs e)
{
BindListImages();
}
image.aspx ページは次のとおりです。
<span class="imagewarpper">
<img id="fullsize" src='<%# Request.QueryString["Name"]%>'
alt='<%=Request.QueryString["Name"] %>' title="<%= Request.QueryString["Name"] %>"
class="picture"/>
</span>