2010-03-19 35 views
4

這是一個非常簡單的問題。ASP點網絡:如何重複頁面上的細微差異的HTML部分?

我有HTML代碼:

<div> 
<img src="image1.jpg" alt="test1" /> 
</div> 
<div> 
<img src="image2.jpg" alt="test2" /> 
</div> 
<div> 
<img src="image3.jpg" alt="test3" /> 
</div> 

等等

的數據從DB(圖像名稱,替換文本)正在添加。

在JAVA中,我會做這樣的事情:

保存在數組中的信息在後端。

爲表述我將通過它與循環JSTL:

<c:foeach items="${data}" var="${item}> 
<div> 
<img src="${item.image}" alt="${item.alt}" /> 
</div> 
</c:foreach> 

是什麼在ASP.net我只是不希望它來創建HTML代碼串的最佳實踐「代碼背後「,這是醜陋的海事組織。

+0

您的HTML沒有顯示。您可能需要重新添加並確保其可見。 – Jaxidian 2010-03-19 17:15:24

+0

它現在可見..謝謝:) – tinky05 2010-03-19 17:17:07

回答

5

我要在此一刺,而不能看到你的代碼:

退房的ASP:Repeater控件。在這之間並綁定您的數據(與您的差異),它可能會做你想做的。

Link 1 Link 2

<編輯:> 好了,現在我看到你的代碼,我可以幫你更好的。我肯定會爲此使用中繼器。我會做這樣的ASPX文件(我可能有一些這方面的錯誤):

然後在C#中,你可以有:

List<ObjectWithFilenameAndAltText> foo = GoGetTheseObjects(); 
MyRepeater.DataSource = foo; 
MyRepeater.DataBind(); 

我可能有一些這方面的錯誤,但我希望這會讓你朝着正確的方向前進。如果您的圖像沒有專用對象,則可以簡單地使用字典或列表>並在您的ASPX代碼中使用「Key」和「Value」。

+0

謝謝。但我撒了一點,數據不是來自數據庫的100%,它仍然有效嗎? – tinky05 2010-03-19 17:20:44

+0

您不需要DataSet或DataTable來使用中繼器。你可以將它們綁定在一起。NET集合以及 – 2010-03-19 17:22:17

+0

好的謝謝,我會嘗試! – tinky05 2010-03-19 17:23:23

1

我會建議看Repeater控制。

對於示例:

<asp:Repeater ID="yourRepeater" runat="server"> 
    <ItemTemplate> 
     <div> 
      <asp:Image ID="yourImage" runat="server" 
       ImageUrl='<%# Eval("Url") %>' 
       ToolTip='<%# Eval("Name") %>' /> 
     </div> 
    </ItemTemplate> 
</asp:Repeater> 

然後在後面的代碼:

List<MockData> lst = new List<MockData>(); 
lst.Add(new MockData() { Name = "Picture 1", Url = "pic1.jpg" }); 
lst.Add(new MockData() { Name = "Picture 2", Url = "pic2.jpg" }); 
lst.Add(new MockData() { Name = "Picture 3", Url = "pic3.jpg" }); 
yourRepeater.DataSource = lst; 
yourRepeater.DataBind(); 
2

這是.aspx文件相當於標記:

<asp:Repeater ID="imageList" Runat="server" EnableViewState="False"> 
    <ItemTemplate> 
     <div> 
      <img 
       src="<%# DataBinder.Eval(Container.DataItem, "ImageSrc") %>" 
       alt="<%# DataBinder.Eval(Container.DataItem, "Alt") %>" /> 
     </div> 
    </ItemTemplate> 
</asp:Repeater> 

在代碼 - 在後面,你應該設置imageList.DataSource屬性並調用imageList.DataBind()。

+0

或者您可以使用ListItem和Attribute包使用例如'<%#((ListItem)Container.DataItem).Attributes [「MyDate」]%>' – 2012-03-29 08:34:15