2011-04-01 166 views
12

頁可能有人請指教「正確」的方法是什麼添加HTML內容的動態ASP.NET頁面?動態添加HTML到ASP.NET

我知道以下聲明的方法。

//Declaration 
<%= MyMethodCall() %> 


//And in the code behind. 
protected String MyMethodCall() 
{ 
    return "Test Value"; 
} 

有沒有更好的或最佳的實踐方法?

編輯:我建立一個Galleriffic照片庫動態地根據位於特定文件夾中的圖片。

回答

25

取決於你想要做什麼。

對於控制/文我通常使用LiteralControl並設置Text財產我想補充,那麼這種控制可以是您想要的網頁上的任意位置添加HTML它出現

LiteralControl引用 here

只要你想它Galleriffic

OK見狀,我想這將僞似乎是那樣...

LiteralControl imageGallery = new LiteralControl(); 
    string divStart = @"<div id='thumbs'><ul class='thumbs noscript'>"; 
    imageGallery.Text += divStart; 
    foreach ([image in images]) 
    { 
     string imageHTML = @"<li><a class='thumb' name='optionalCustomIdentifier' ref='path/to/slide' title='your image title'> 
          <img src='path/to/thumbnail' alt='your image title again for graceful degradation' /></a> 
          <div class='caption'>[caption]<div></li>"; 

     imageGallery.Text += imageHTML; 
    } 
    string divEnd = @"</ul></div>"; 
    imageGallery.Text += divEnd; 

    this.[divOnPage].Controls.Add(imageGallery); 
+0

什麼是這種方法的優點,而不是我規定的方法? PS:謝謝你的全面的例子! – 2011-04-01 03:15:24

+3

此代碼是awfull。爲什麼不使用中繼器?或者.aspx中的for。連接字符串創建HTML不是我在C#代碼中的最佳實踐 – 2011-04-01 03:21:28

+2

裝配標記應該是絕對的最後手段,因爲它創建了一個維護的噩夢,這將使邪神得意的想法。至少,將其封裝到用戶或服務器控件中。 – Thomas 2011-04-01 04:41:56

6

有幾種方法可以做到那要用哪個取決於你的場景和偏好。

  • Web用戶控件:可以動態添加,並且您可以獲得Visual Studio的完整編輯器支持。
  • XML文本(VB.NET只):非常方便的方式來快速拼湊HTML代碼。
  • 模板:向您的解決方案中添加一個純HTML文檔,並將其作爲資源。然後你會得到編輯器的支持,你不會用HTML源代碼來混淆你的代碼。
6

.aspx的:

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

後面的代碼:

DIV1.InnerHtml = "some text";