2012-02-28 63 views
4

我需要一些幫助來搞清楚如何做某事。在asp.net中添加html元素

我得到了這個庫(galleriffic)和一些存儲在Flicker.com中的圖像,所以我使用閃爍api來獲取圖像,但仍然手動添加它們以測試圖庫。

現在我正在尋找一種將圖像插入到html中的好方法,當我將它們與閃爍API匹配後。

我發現這個htmltextwriter和使用的功能

Response.Write(GetDivElements());

,但是這是在加入div的對HTML的頂部,而不是身體標籤內。

我qustions是:

  1. HtmlTextWriter writer = new HtmlTextWriter(stringWriter)建立在服務器端的HTML標籤的好方法?

  2. 有沒有更好的方法來添加元素到HTML然後Response.Write("");

回答

4

如果你使用的是老式的asp.net,而不是asp.net MVC,那麼你可以創建一個帶有id和runat =「server」的div。然後你可以直接寫入html。

aspx頁面

<div id = "DivINeedToAddStuffTo" runat="server" /> 

aspx.cs

DivINeedToAddStuffTo.InnerHtml = GetDivElements(); 

而且,我看不出什麼毛病,使用的HtmlTextWriter來創建HTML標記

+0

yeap我測試了它,而我在找什麼謝謝:) – samy 2012-02-28 15:08:10

+0

@samy,是的,它的工作原理,但檢查你的viewstate。它包含div的內容。您已經有效地添加了兩次標記。如果你想避免你的頁面變大,請檢查下面的答案。 – 2012-02-28 15:22:58

2

你可以嘗試尋找到Placeholders。這樣,您可以創建一個圖像控件的實例,然後將其添加到您的佔位符中。

Image myImg = new Image(); 
myImg.ImageUrl = "MyPicture.jpg"; 
myPlaceholder.Controls.Add(myImg); 
+0

感謝您的幫助 – samy 2012-02-28 15:08:40

7

這是我在做什麼時需要添加標記。

在我的網頁

<asp:PlaceHolder ID="MyPlaceholder" runat="server"></asp:PlaceHolder> 

在後面

MyPlaceholder.Controls.Add(new Literal() { Text="<div>some markup</div>"}); 

我的代碼做這種方式的原因是:

1)你可以把佔位符在你需要它的結構的頁面

2)通過在運行時向Controls集合添加Literal可防止Vi ewState越來越臃腫與它的內容。

+0

感謝您的幫助 – samy 2012-02-28 15:09:03

+0

我讀過一段時間以前可以將視圖狀態保存在不同的文件或數據庫中嗎?這種技術是否有助於大視野狀態? – samy 2012-02-28 15:48:45

+0

據我所知只能用SessionState。 ViewState包含頁面控件的屬性值。它充當頁面級別的持久性媒介。有一半的時間,雖然它充滿了垃圾。你必須非常小心,我已經看到單獨使用ViewState的頁面。有一些很好的網站(例如http://ignatu.co.uk/ViewStateDecoder.aspx)會顯示你的ViewState的內容。值得檢查。 – 2012-02-28 15:56:18

1

您應該能夠使用ASP字面控制:

 foreach (var item in items) 
     { 
      Literal literal = new Literal(); 
      literal.text = item.html; //Assuming the item contains the html. 
      MyPlaceholder.Controls.Add(literal); 
     } 

在頁面呈現之前,你可以有代碼。

希望幫助

保羅

編輯

對不起,我想我是錯了,我以爲你已經與鏈接的圖像(S)的HTML,而不是實際形象本身,Justin的回答會適合你,如果是這樣的話。

+0

感謝您花時間和試圖幫助我:) – samy 2012-02-28 15:09:34

1
var ctrl = new WebControl(HtmlTextWriterTag.Div) { CssClass = "SomeClass" }; 
    ctrl.Attributes["style"] = "float:left;display:inline-block;margin:3px;"; 

    ctrl.Controls.Add(new Image 
    { 
     ImageUrl = 
     Page.ResolveUrl("image path here") 
    }); 

    this.Controls.Add(ctrl);