繁体   English   中英

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

[英]How to include JavaScript from a Partial View in ASP.NET MVC3

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

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

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

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

ASPX

<body>
  <!-- End of Body -->
  <asp:ContentPlaceHolder ID="JavaScriptIncludes" runat="server" />
</body>

剃刀

<body>
  <!-- End of Body -->
   @RenderSection("JavaScriptIncludes", required: false)
</body>

然后在部分:

ASPX

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

剃刀

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

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

以下是使用任何库的JavaScript代码进行部分视图的方法( 即使在页面末尾加载

在您的局部视图中添加:

@{
    TempData["Script"] += "MyFunction();";
}

<script type="text/javascript">
    function MyFunction() {
        // you can call your library here, e.g. jquery:
        $(function () {

        });
    }
</script>

在您的_Layout.cshtml页面中添加您的库后添加:

@*LOAD YOUR LIBRARIES HERE (E.G. JQUERY) *@


@if (TempData["Script"] != null)
{
    <script type="text/javascript">
        @Html.Raw(TempData["Script"].ToString())
    </script>
}

您可以将多个部分视图附加到相同的键TempData [“Script”]。 如果你继续使用+ =运算符添加函数,他们将很乐意共存:

@{
    TempData["Script"] += "AnotherFunction();";
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM