2016-11-17 81 views
1

我想显示图片从文件夹图像与中继器,但probelm图片无法显示我不知道为什么。图像不显示与asp.net中继器

<div data-u="slides" style="cursor: default; position: relative; top: 0px; left: 0px; width: 800px; height: 356px; overflow: hidden;"> 
 

 
           <asp:Repeater runat="server" ID="RepaterImages"> 
 
            <ItemTemplate> 
 
             <div runat="server" data-p="144.50"> 
 
              
 
              <img id="Image" runat="server" data-u="image" style="Width:120px;" src='<%#Container.DataItem %>'/>           
 

 
             </div> 
 
            </ItemTemplate> 
 
           </asp:Repeater> 
 
          </div>

protected void Page_Load(object sender, EventArgs e) 
{ 
    int id = Convert.ToInt32(Request.QueryString["id"]); 

    var path = Server.MapPath("ProjectsImages/ "); 

    var images = Directory.GetFiles(path,id+"*"); 

    ArrayList list = new ArrayList(); 

    foreach (var img in images) 
    { 

     list.Add(img); 

    } 
    RepaterImages.DataSource = images; 
    RepaterImages.DataBind(); 
} 
+0

请张贴**呈现您的网页的HTML **。 – Dai

+0

更改'<%#Container.DataItem%>'到'<%#Eval(“columnName”)%> – VDWWD

+0

@VDWWD我从文件夹而不是数据库表中检索图像 – hashim

回答

3

您的代码的问题是,您正在使用图像的物理路径。你将不得不提供相对于中继器的路径。改变你的代码如下,它应该工作,我认为:

protected void Page_Load(object sender, EventArgs e) 
     { 
      try 
      { 
       int id = Convert.ToInt32(Request.QueryString["id"]); 
       string relativePath = "/ProjectsImages/"; 
       var path = Server.MapPath(relativePath); 
       var images = Directory.GetFiles(path, id + "*").Select(x => 
       { 
        var arrPath = x.Split('\\'); 
        string imgName = arrPath[arrPath.Length - 1]; 
        return relativePath + imgName; 
       }); 
       RepaterImages.DataSource = images; 
       RepaterImages.DataBind(); 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
     } 
+0

是的,它的作品谢谢:) – hashim

0

你已经错过了回传属性。请使用下面的代码。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     int id = Convert.ToInt32(Request.QueryString["id"]); 

     var path = Server.MapPath("ProjectsImages/ "); 

     var images = Directory.GetFiles(path,id+"*"); 

     ArrayList list = new ArrayList(); 

     foreach (var img in images) 
     { 

      list.Add(img); 

     } 
     RepaterImages.DataSource = list; 
     RepaterImages.DataBind(); 
    } 
} 
+0

我试过这个不行,但我认为这个问题表单路径,但我不知道 – hashim

+0

以前的代码是不是数据源使用图像属性,而不是arrayList。更新了代码检查现在 – vignesh