【问题标题】:Use .cshtml pages in Composite C1 that aren't strict XHTML在 Composite C1 中使用非严格 XHTML 的 .cshtml 页面
【发布时间】:2014-09-15 18:24:13
【问题描述】:

我需要在 Composite C1 站点中包含一些 .cshtml / razor 页面,这些页面不强制执行严格的 XHTML / XML。

ie - 目前任何未关闭的标签,例如,阻止页面加载。

客户需要这个;有可能吗?

谢谢

【问题讨论】:

    标签: c1-cms


    【解决方案1】:

    将错误/不安全的标记包装在 CDATA 部分中。由于 Composite C1 渲染引擎内部主要需要严格的 XML 要求,并且通常不是浏览器的关注点,因此 Composite C1 将 CDATA 部分视为“杂乱的标记”,它不会解析,而只是发出原始的:

    <div>
      <![CDATA[
        Bad & ugly HTML!<br>
      ]]>
    </div>
    

    它将不受阻碍地通过复合C1并出来:

    <div>
        Bad & ugly HTML!<br>
    </div>
    

    以上引自http://docs.composite.net/Layout/Writing-XHTML

    这是一个使用 Razor 语法的简单示例:

    <div>
      <![CDATA[
        @{
          string unstructuredMarkup = "Bad & ugly HTML!<br>";
          @Html.Raw(unstructuredMarkup);
        }
      ]]>
    </div>
    

    【讨论】:

    • 谢谢 - 这将如何处理 razor 内容 - 可以在 CDATA 部分内吗?
    • 是的,您可以在 CDATA 部分的外部和内部使用 Razor 的所有功能。我已经更新了答案,所以也有一个简单的 Razor 示例。
    【解决方案2】:

    您可以将函数的 ReturnType 设置为字符串(默认为 XhtmlDocument)。您可以通过像这样覆盖 ReturnType 属性来做到这一点

    @functions
    {
       protected override Type FunctionReturnType
       {
          get { return typeof(string); }
       }
    }
    

    【讨论】:

    • 谢谢 - 这与 CDATA 方法之间的相对优势是什么?!
    • 您不需要摆弄 CDATA,而且在某些情况下 CDATA 不会削减它,即。我从来没有 '' 构造与 CDATA 一起使用。
    猜你喜欢
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多