Composite C1 4.0 ベータ版と最新の 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 は、render 関数で 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>", ""));
これよりも良い解決策があると確信していますか?:)
チャド