Spark视图引擎 - 使用RenderAction忽略命名的内容

时间:2010-06-27 14:25:42

标签: asp.net-mvc spark-view-engine

Application.spark:

<html>
  <head>
    <use content="head"/>
  </head>
  <body>
    <use content="view"/>
  </body>
</html>

Index.spark:

# Html.RenderAction("Hello");    // This renders _Hello.spark

_Hello.spark:

<content name="head">
    <script src="/hello.js"></script>
</content>

<p>hello</p>

_Hello.spark的头部内容被忽略。我怎样才能把它包括在内?

1 个答案:

答案 0 :(得分:0)

RenderAction渲染部分视图,通常不具有主视图(布局)。您可以尝试为_Hello.spark指定主布局,但它将在部分结果内部呈现,而不是在主视图内部。

您可以尝试使用&lt; use file =“_ Hello.Spark”/&gt; (或者&lt; Hello /&gt;)相反,这有望在主主布局中呈现头部内容。但是这需要_Hello.spark是纯粹的局部视图,而不是行动。

如果您需要 RenderAction ,则无法从那里修改您的头部内容。 RenderAction在运行时在Spark外部单独运行,并且在编译时由Spark完成合并头部内容。

您可以使用JavaScript从渲染的操作结果中修改头部内容。

或者,您可以在主视图中指定脚本包含。

您也可以将它们放入_HelloIncludes.spark并执行&lt; HelloIncludes /&gt; - 避免重复代码。