0

現在、機能しているこのコードを使用していますが、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="&#171;
   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&#187;"/>
        </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="&#171;
     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&#187;"/>
        </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>
4

2 に答える 2

0

手っ取り早い解決策は、image.aspx ファイルを変更して、絶対にイメージ ファイルを指すようにすることです。

画像が/resources/imgフォルダーに保存されているとします。コードは次のようになります。

<span class="imagewarpper">
<img id="fullsize" src='/resources/img/<%# Request.QueryString["Name"]%>'   
alt='/resources/img/<%=Request.QueryString["Name"] %>'
title="<%= Request.QueryString["Name"] %>" class="picture"/>
</span>

srcパラメーターとaltパラメーターが、パラメーター名と一緒に作成およびレンダリングされる追加のコードをどのように受け取ったかに注目してください。

これを実装するためのより良い方法がありますが、これは必要な変更を示すのに十分明確であると思います.

于 2013-08-17T19:13:41.293 に答える
0

これを理解して、これを読んで助けが必要な人のためにここに置くと思いました. コードビハインドは同じままで、各ページでいくつか変更するだけです。

リストビュー ページ:

        <ItemTemplate>
    <li>
    <asp:HyperLink ID="lnkImage" Tooltip='<%# Eval("Name") %>' runat="server" NavigateUrl='<%# Eval("Name", "~/Image.aspx?Image1=Images/yeah/a/directory/{0}&Name={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>

Image.aspx ページ:

    <img id="fullsize" src='<%= Request.QueryString["Image1"]%>' alt='<%= Request.QueryString["Name"]%>' title='<%= Request.QueryString["Name"]%>' class="picture"/>
于 2013-10-06T14:15:06.683 に答える