我正在使用一些组件。当页面呈现时,组件生成html注释标记。如果我在一个页面上使用这个组件10次,html注释会插入10次。
如何在渲染页面前移除html评论标签?
发布于 2010-01-19 05:47:00
基于第三方程序集创建自定义服务器控件,如下所示:
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>发布于 2010-01-19 02:21:01
使用服务器端注释:
<%--
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发布于 2010-01-19 02:29:10
哪种组件?假设它是一个呈现HTML注释的自定义服务器控件。每个服务器控件控制其向浏览器呈现内容的过程。因此HTML注释将由该控件呈现,并直接呈现给浏览器。例如,它将如下所示:http://msdn.microsoft.com/en-us/library/aa338806%28VS.71%29.aspx您可以创建自己的类,该类继承自此组件并更改呈现过程,但效率很低。
你可以使用javascript来做这件事,但是我不得不问为什么这些评论是一个问题?当您的应用程序在发布模式下构建时,THey可能无法呈现给浏览器...
HTH。
https://stackoverflow.com/questions/2088193
复制相似问题