2014-06-05 2 views
0

하드 드라이브에서 이미지를 동적으로 가져 오려고하지만 동적 경로가 제대로 만들어지기 때문에 표시 할 수 없습니다.이미지를 하드 드라이브에서 그리드보기로 동적으로 가져 오기

이유는 웹 사이트의 백엔드 시스템을 만들기 때문입니다. 동일한 하드 드라이브에서 호스팅되지만 백엔드는 사용자가 추가 한 이미지에 액세스해야합니다.

사용자가 웹 사이트에 "게시"하기 전에 사용자가 업로드 한 내용을 스크린 할 수 있습니다.

메인 사이트에서이 코드를 사용하여 백엔드에서 작동하도록 조정했지만 작동하지 않습니다.

페이지를 표시 할 때 이미지가 표시되지 않지만 이미지를 표시 할 때 이미지가 올바르게 표시되어야 링크 모음을 복사 할 수 있고 주소 표시 줄에 이미지를 표시 할 때 이미지를 표시 할 수 있습니다.

<div class="panel panel-default" style="background-color: #f3f3f3;"> 
    <div class="panel-body"> 
     <asp:DataList ID="_propertyImagesList" runat="server" RepeatColumns="4" RepeatDirection="Horizontal" CellPadding="16"> 
      <ItemTemplate> 
       <div class="popup-gallery"> 
        <a id="imageLink" href='<%# Eval("ImagePath","file:///C:/Development/main website/main website/PropertyImages/{0}") %>' runat="server" class="thumbnail" style="margin: 10px; min-height: 140px; min-width: 140px;"> 
         <asp:Image ID="_propertyImage" ImageUrl='<%# Bind("ThumbPath", "file:///C:/Development/main website/main website/PropertyImages/{0}") %>' runat="server" CssClass="img-responsive" /> 
        </a> 
       </div> 
      </ItemTemplate> 
     </asp:DataList> 
    </div> 
</div> 

C#을

protected void GetPropertyImages(int propertyId) 
    { 
     SqlCommand cmd = new SqlCommand("GetPropertyImages", conn); 
     cmd.CommandType = System.Data.CommandType.StoredProcedure; 

     SqlDataReader rdr; 

     cmd.Parameters.Add("@PropertyId", System.Data.SqlDbType.Int).Value = propertyId; 

     conn.Open(); 
     rdr = cmd.ExecuteReader(); 

     _propertyImagesList.DataSource = rdr; 
     _propertyImagesList.DataBind(); 

     rdr.Close(); 
     conn.Close(); 
    } 
: m은 :(

이 sombody 내 코드를 보면 어디

아래의 코드를 잘못려고하고 볼 수 난처한 상황에 빠진

+1

아무것도 : //에서 슈퍼 나쁜 토록 ... 이제까지 사용하지 않아야합니다! DataList를 바인드하는 C# 코드를 제공해야하며 개인적으로 ItemDataBound 이벤트를 사용하여 이미지 URL을 바인드해야합니다. –

+0

Iv에 C#이 추가되었습니다. C#은 기본적으로 SQL에 경로 세부 정보의 끝을 요청하여 마크 업이 이미지를 찾고 표시 할 수 있도록합니다. 필자는 file : //을 사용하지 않았지만 테스트 해보고 싶었습니다. 나는 단지 길을 찾을 것 같습니다. – Deviney

답변

0

이것은 내가 할 수있는 일이며 많은 프로젝트에서 해왔습니다. 테스트되지 않았으므로 설정에 맞게 두 개 이상 필요합니다. C : \ Development \ main website \ main 웹 사이트가 웹 사이트의 루트라고 추측합니다.

NB : DataList의 ID도 변경했습니다. Resharper의 명명 규칙과 일치합니다. 파일을

<asp:DataList ID="PropertyImageList" runat="server" OnItemDataBound="PropertyImageList_ItemDataBound" RepeatColumns="4" RepeatDirection="Horizontal" CellPadding="16"> 
    <ItemTemplate> 
     <div class="popup-gallery"> 
      <asp:HyperLink runat="server" ID="PropertyImageLink" CssClass="thumbnail" Style="margin: 10px; min-height: 140px; min-width: 140px;"> 
       <asp:Image runat="server" ID="PropertyImage" CssClass="img-responsive" /> 
      </asp:HyperLink> 
     </div> 
    </ItemTemplate> 
</asp:DataList> 

C#을

protected void PropertyImageList_ItemDataBound(object sender, DataListItemEventArgs e) 
{ 
    var data = e.Item.DataItem as DbDataRecord; 
    if (data == null) 
     return; 

    var link = e.Item.FindControl("PropertyImageLink") as HyperLink; 
    var image = e.Item.FindControl("PropertyImage") as Image; 

    if (link == null || image == null) 
     return; 

    image.ImageUrl = "~/PropertyImages/" + data["ImagePath"]; 
    link.NavigateUrl = "~/PropertyImages/" + data["ThumbPath"]; 
} 
+0

기본 웹 사이트는 이것이 구현되는 웹 사이트의 루트가 아닙니다. 나는 다른 솔루션에서 사용하고 있지만 둘 다 동일한 하드 드라이브/서버에 있습니다. 이것이 전체를 정의하는 이유입니다. URL을 전체 c :/종류의 경로로 조정해도 여전히 작동합니까? – Deviney

+0

나는 그냥 안된다고 말할거야! PropertyImages 디렉토리를 탐색 할 수없는 경우 서버를 사용하지 않으면 솔루션이 작동하지 않습니다. 이것은 나쁜 행동입니다. 아마도 PropertyImage 폴더를 가상 디렉터리로 만들 수있을 것입니다. –

+0

이미지를 파일로 다운로드하면 어떻게됩니까? 하지만 나는 그들을 웹 사이트에 표시 할 수 없습니다. 이 가상 디렉터리에 대해 들어 봤지만 구현 방법을 잘 모르겠습니다. – Deviney

관련 문제