MvcPlayer呈现标记

时间:2014-10-20 11:51:59

标签: asp.net-mvc razor c1-cms

这个问题与CMS Composite C1和MvcPlayer功能有关。

我正在为我的网页使用Razor页面模板,并使用

在布局中嵌入了多个MVC操作
@Function("Composite.AspNet.MvcPlayer", new { Path = "/Controller/Action" })

这一般来说效果很好,但由于某种原因,MvcPlayer不仅渲染动作本身返回的视图,而且还包含视图

<html><head></head><body>[View content is here]</body></html>

这显然搞砸了我的标记,因为我在网站中嵌套了html-blocks。 为什么会发生这种情况,是否有办法阻止MvcPlayer创建额外的标记?

由于这似乎只是一个复合C1问题,我linking to the source code for Composite C1希望有人能够告诉我它是否是复合C1错误,或者我是不是错误地使用它。

1 个答案:

答案 0 :(得分:1)

如果查看MvcPlayer的代码,您会发现以下template file

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:in="http://www.composite.net/ns/transformation/input/1.0" xmlns:lang="http://www.composite.net/ns/localization/1.0" xmlns:f="http://www.composite.net/ns/function/1.0" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xsl in lang f">
    <xsl:template match="/">
        <html>
            <head>
            </head>
            <body>
                <f:function name="Composite.AspNet.MvcPlayer.Render">
                    <f:param name="Path" value="{/in:inputs/in:param[@name='Path']}" />
                </f:function>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

您需要弄清楚如何使用您自己的模板覆盖默认模板。您可能需要删除修改后的XSL文件,但我目前无法找到它。