如何在ASP.NET MVC3中包含部分视图中的JavaScript

Jon*_*eus 28 javascript asp.net-mvc renderpartial partial-views asp.net-mvc-3

我希望能够为部分视图提供一种在视图底部包含JavaScript代码/文件的方法.这将使部分视图包含它们所依赖的任何JavaScript文件.例如,如果我想编写需要创建JQueryUI对话框的部分,我想导入JQueryUI JavaScript文件以及添加呈现对话框的JavaScript代码.

我目前正在父视图中编写此代码,这使得使用局部视图毫无意义.

我知道RenderPartial多次调用会导致脚本被多次包含.一旦我知道如何从局部视图中将JavaScript实际包含到主视图中,这是一个可解决的问题.

RPM*_*984 7

在MasterPage(ASPX)中定义ContentPlaceHolder或在布局页面中定义部分(Razor)

ASPX:

<body>
  <!-- End of Body -->
  <asp:ContentPlaceHolder ID="JavaScriptIncludes" runat="server" />
</body>
Run Code Online (Sandbox Code Playgroud)

剃刀:

<body>
  <!-- End of Body -->
   @RenderSection("JavaScriptIncludes", required: false)
</body>
Run Code Online (Sandbox Code Playgroud)

然后在部分:

ASPX:

<asp:Content ID="ExtraJs" ContentPlaceHolderID="JavaScriptIncludes" runat="server">
   <script type="text/javascript" src="@Url.Content("/Scripts/SomeScript.js")" />
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

剃刀:

@section JavaScriptIncludes
{
   <script type="text/javascript" src="@Url.Content("/Scripts/SomeScript.js")" />
}
Run Code Online (Sandbox Code Playgroud)

还要考虑使用HTML Helper来渲染<script>标记.

  • 我无法使用Razor.这就是我在观点中一直在做的事情.但是,它看起来不像partials从父视图继承布局.如果您尝试使用示例在部分视图中显式设置它,那么您最终会获得额外的body标记,其中呈现部分视图. (14认同)
  • 这不适用于剃刀部分和部分视图. (6认同)

Vad*_*dim 0

您可以在标签内包含<script>标签<body>,以便将它们放在局部视图中。

  • 在 div 和表格中间放置脚本标记被认为是一种不好的做法,并且可能会导致页面加载性能问题。我希望能够在头部或页面底部添加脚本。 (17认同)