2010-01-18 21 views
1

渲染我使用的一些組件之前。當頁面呈現時,組件生成html評論標籤。如果我在一個頁面上使用這個組件10次,html評論插入了10次。如何刪除HTML註釋標記在asp.net

如何刪除HTML註釋標記之前渲染頁面?

回答

1

創建基於第三方組件中的自定義服務器控件,像這樣:

namespace ServerControls 
{ 
    [ToolboxData("<{0}:LabelWithComment runat=server></{0}:LabelWithComment>")] 
    public class LabelWithComment : Label 
    { 
     protected override void Render(HtmlTextWriter output) 
     { 
      var htmlFromBaseClass = new StringBuilder(); 
      var htmlTextWriterForBaseClass = 
       new HtmlTextWriter(new StringWriter(htmlFromBaseClass)); 
      base.Render(htmlTextWriterForBaseClass); 
      var modifiedHtml = ModifyHtmlUsing(htmlFromBaseClass); 
      output.Write(modifiedHtml); 
     } 

     private static string ModifyHtmlUsing(StringBuilder stringBuilder) 
     { 
      stringBuilder.Replace("<!-- some comment -->", ""); 
      return stringBuilder.ToString(); 
     } 
    } 
} 

然後自定義ModifyHtmlUsing方法repalce任何你想要的。

然後包括你在哪裏使用控制在頁面上這個指令:

<%@ Register Assembly="ServerControls" Namespace="ServerControls" TagPrefix="Custom" %> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <Custom:LabelWithComment ID="lblLabelWithComments" 
     Text="Some Text <!-- some comment -->" runat="server" /> 
    </div> 
    </form> 
</body> 
</html> 
1

使用服務器端註釋:

<%-- 
    Commented out HTML/CODE/Markup. Anything with 
    this block will not be parsed/handled by ASP.NET. 

    <asp:Calendar runat="server"></asp:Calendar> 

    <%# Eval(「SomeProperty」) %>  
--%> 

或僅呈現在調試模式下評論

#if DEBUG 
// Add my comment for debug only 
#endif 
+0

我沒有這個組件的源代碼。只有組裝。如果我有來源,我已經修復它 – ebattulga 2010-01-18 18:23:06

+0

,如果你能解決這個問題,如果你有源代碼,試試這個:http://www.red-gate.com/products/reflector/ – TJMonk15 2010-01-18 18:47:59

1

什麼樣的分量?假設它是一個呈現HTML註釋的自定義服務器控件。每個服務器控件都控制其向瀏覽器呈現內容的過程。因此,HTML註釋將通過此控件呈現並直接呈現給瀏覽器。舉例來說,它將是:http://msdn.microsoft.com/en-us/library/aa338806%28VS.71%29.aspx您可以創建自己的繼承自此組件的類並更改渲染過程,但效率不高。

你可以使用JavaScript來可能做到這一點,但我要問,爲什麼這些註釋的問題?他們可能不會被渲染到時你的應用是建立在釋放模式的瀏覽器...

HTH。

+0

由於此評論包含太多代碼和文本。 – ebattulga 2010-01-18 18:34:36

+0

好的。不幸的是,它讓你離開渲染過程;我希望有一個簡單的方法,但我不知道有什麼方法可以簡單地覆蓋一些內部過程,除非它們允許您配置它(通過屬性關閉它)或使用JS代碼刪除註釋,我認爲你可以做,但不是100%肯定的......如果你有支持,你可以提出一個請求來添加一個屬性作爲一個功能,以關閉它。 – 2010-01-18 19:41:33