我已经设置并安装了 Composite C1 4.0 beta,以及最新的 MVC Player 版本(从 2012 年 12 月 7 日开始),但是每当我调用 MVCPlayer 函数时,它都会在页面上输出额外的标签。例如,我正在为面包屑调用 MVCPlayer 函数。这是输出:
..... before breadcrum content .....
<a name="site-nav" class="screen-reader"></a>
<html xmlns="http://www.w3.org/1999/xhtml">
<head />
<body>
<html>
<head />
<body>
<!-- START BREADCRUM SECTION -->
<ul id="breadcrumbs">
<li><a href="/">Homep</a></li>
<li>Events</li>
</ul>
<!-- END BREADCRUM SECTION -->
</body>
</html>
</body>
</html>
<div class="clear"></div>
</div>
..... rest of page .....
如您所见,它位于页面中间。MVCPlayer 在渲染函数中返回一个 XDocument。那么,如何去掉 START & END BREADCRUM SECTION 评论之前的额外标签?页面呈现良好,但这影响了我使用页面过滤器向输出添加其他内容的能力,例如切换图像标记 src,以便我可以使用 jquery 脚本执行延迟加载图像(参见http:// /www.appelsiini.net/projects/lazyload)。
有什么想法吗?
谢谢!
乍得
实际面包屑页面的输出很简单<ul><li>...</li></ul>
,并且日志文件中没有错误。MVC Player 实际上添加了附加代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head />
<body>
</body>
</html>
在 Player.cs 文件中,代码如下:
var sbHtml = new StringBuilder();
sbHtml
.Append(@"<html xmlns=""http://www.w3.org/1999/xhtml"">
<head/>
<body>")
.Append(responseWriter.ToString())
.Append(@"
</body>
</html>");
try
{
return XDocument.Parse(sbHtml.ToString());
}
我能够修改 /Renderers/Page.aspx.cs 并将这一行更改为“剥离”额外的标签:
原来的:
xhtml = _renderingContext.FormatXhtml(xhtml);
更新:
xhtml = _renderingContext.FormatXhtml(xhtml.Replace(@"<html xmlns=""http://www.w3.org/1999/xhtml"">", "").Replace("<html>", "").Replace("<head />", "").Replace("<head></head>", "").Replace("<body>", "").Replace("</body>", "").Replace("</html>", ""));
我确定有比这更好的解决方案吗?:)
乍得