16

如何注入脚本标签,例如

<script src="somejsfile"></script>

或者

<script type="text/javascript>some javascript</script>

从局部视图进入页面的头部标签?


更新:回答老问题这是关于 ASP.NET MVC 的。我们可以使用 RenderSection。这里是使用 Razor 视图引擎的 MVC 3 示例:

布局视图或母版页:

<html>
  <head>
  <script ...></script>
  <link .../>
  @RenderSection("head")
  </head>
  <body>
  ...
  @RenderBody()
  ...
  </body>
</html>

查看,例如主页:

@section head{
  <!-- Here is what you can inject the header -->
  <script ...></script>
  @MyClass.GenerateMoreScript()
}
<!-- Here is your home html where the @RenderBody() located in the layout. -->
4

2 回答 2

2

即使 THX 的答案有效,它也不是一个好的答案,因为 MVC 的意图是本质上是无状态的。此外,他的解决方案不允许您将脚本放置在它们应该去的地方 - 大多数网站都希望它们的脚本声明位于页面底部的</body>标签之前,因为它最有利于性能和搜索引擎优化。

有一个答案,感谢Darin Dimitrov

使用编辑器/显示模板中的部分

他的回答允许您从布局视图中的部分视图注册脚本。

需要注意的是,他的答案使用字典对象中的 GUID 标记项目,因此不能保证脚本将按照它们在部分视图中列出的顺序呈现在母版页中。

有两种解决方法:

  1. 从部分视图中仅注册 1 个脚本- 或-
  2. 更改他的 HTML Helper 实现以支持排序

我正在尝试自己处理后者。

祝你好运。

于 2011-12-06T23:45:18.437 回答
0

部分视图是UserControls。你不能使用RegisterClientScriptInclude方法ClientScriptManager吗?

protected override void OnLoad(EventArgs e) {
    base.OnLoad(e);
    Page.ClientScript.RegisterClientScriptInclude("some key", "http://website/javascript.js");
}
于 2009-11-20T04:24:04.203 回答