我正在使用一些组件。页面渲染时,组件会生成html注释标记。如果我在一个页面上使用此组件10次,则插入10次html注释。
如何在渲染页面之前删除html注释标记?
答案 0 :(得分:2)
使用服务器端评论:
<%--
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
答案 1 :(得分:1)
什么样的组件?让我们说它是一个呈现HTML注释的自定义服务器控件。每个服务器控件都控制其向浏览器呈现内容的过程。因此,HTML控件将由此控件呈现,并将其直接呈现给浏览器。作为示例,它将是以下内容:http://msdn.microsoft.com/en-us/library/aa338806%28VS.71%29.aspx您可以创建自己的类,该类继承自此组件并更改呈现过程,但效率很低。
你可以使用javascript来做这件事,但我不得不问为什么这些评论是个问题?当您的应用程序以发布模式构建时,可能无法呈现给浏览器...
HTH。
答案 2 :(得分: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方法以重新生成您想要的任何内容。
然后在您使用控件的页面上包含此指令:
<%@ 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>