在局部视图中使用部分

Ozr*_*ric 8 razor asp.net-mvc-4

在我的共享布局中,我希望有一个"脚本"部分,以填充页面功能所需的所有脚本.

Layout.cshtml

<html>
<head>
    <title>Test</title>
    <script src="@Url.Content("~/Scripts/jquery-2.0.3.js")" type="text/javascript"> </script>

    @RenderSection("Scripts", required: false)

</head>
<body>
    @RenderBody()
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

所以,我的视图加载了一个特定的javascript,我希望它在"脚本"部分,并且它正在工作.

Index.cshtml

@model PlatformaPu.Areas.Inventura.Models.Home.Index

@section Scripts {
    <script src="@Url.Content("~/Areas/Inventura/Scripts/Home/Index.js")" type="text/javascript"></script>
}

{CONTENT REMOVED FOR BREVITY}

@section Footer {
    @Html.Partial("~/Views/Shared/_AppSelector.cshtml", Model.AppSelector)
}
Run Code Online (Sandbox Code Playgroud)

最后,我的视图渲染部分,我有一个这部分加载的JavaScript.

_AppSelector.cshtml

@model PlatformaPu.Models.Shared._AppSelector

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

{CONTENT REMOVED FOR BREVITY}
Run Code Online (Sandbox Code Playgroud)

...这是不是工作- JavaScript是不是在"脚本"部分呈现

我怎样才能做到这一点?

Oll*_*e P 13

正如在这个问题中讨论的那样,在局部视图中不可能使用部分:

部分在部分视图中不起作用,这是设计的.您可以使用一些自定义帮助程序来实现类似的行为,但老实说,视图的责任是包含必要的脚本,而不是部分责任.我建议你使用主视图的@scripts部分来做到这一点,而不要让部分人担心脚本.

您应该将脚本引用添加到引用partial的主视图中.

  • 为什么我要在主视图中添加一个仅由单个页面使用的脚本,该脚本使用我的局部视图?因此,我的应用程序的每个页面都将有这个未使用的引用! (16认同)