从ASP.NET MVC局部视图卸载/删除javascript函数

从ASP.NET MVC局部视图卸载/删除javascript函数,javascript,jquery,asp.net-mvc,partial-views,Javascript,Jquery,Asp.net Mvc,Partial Views,在局部视图中,我加载如下javascript文件: <script src="@Url.Content("~/Scripts/Testing.js")" type="text/javascript"></script> 您应该避免在片段中引用任何脚本。您可以在布局中定义一个部分,例如在关闭之前,该部分允许视图包含一些自定义脚本: <script type="text/javascript" src="@Url.Content("~/scripts/some

在局部视图中,我加载如下javascript文件:

<script src="@Url.Content("~/Scripts/Testing.js")" type="text/javascript"></script>

您应该避免在片段中引用任何脚本。您可以在布局中定义一个部分,例如在关闭
之前,该部分允许视图包含一些自定义脚本:

    <script type="text/javascript" src="@Url.Content("~/scripts/some_common_script_that_will_be_used_by_all_views_such_as_jquery_for_example")"></script>
    @RenderSection("scripts", false)
</body>
</html>

@RenderSection(“脚本”,false)
然后在视图中(而不是在局部视图中)重写此部分以包括此视图可能需要的任何脚本:

@section scripts {
    <script src="@Url.Content("~/Scripts/Testing.js")" type="text/javascript"></script>
}
@节脚本{
}

您应该避免在片段中引用任何脚本。您可以在布局中定义一个部分,例如在关闭
之前,该部分允许视图包含一些自定义脚本:

    <script type="text/javascript" src="@Url.Content("~/scripts/some_common_script_that_will_be_used_by_all_views_such_as_jquery_for_example")"></script>
    @RenderSection("scripts", false)
</body>
</html>

@RenderSection(“脚本”,false)
然后在视图中(而不是在局部视图中)重写此部分以包括此视图可能需要的任何脚本:

@section scripts {
    <script src="@Url.Content("~/Scripts/Testing.js")" type="text/javascript"></script>
}
@节脚本{
}


首先为什么要以部分方式加载javascript?Javascript应该在布局中只加载一次。你的设计一定有问题。你想实现什么(请不要回答我:
我想删除第一个视图中加载的函数
)?我也面临同样的问题。解决方案就是@DarinDimitrov所建议的。这种方法的另一个问题是,如果您再次加载部分视图,您的页面中将有多个脚本(相同)。@DarinDimitrov在第一个视图中加载的JS特定于此部分视图,在其他视图中不需要。好的,我可以在布局中加载。但最终剧本可能会非常庞大。当我通过浏览器查看源代码时,我看不到部分视图中调用的JS函数,出于安全原因,这不是更好吗?当我指的是将其放在布局中时,我不是指将整个脚本内联到那里。我的意思是你应该使用一个你应该引用的外部javascript文件。您应该在视图的脚本部分中引用它,以便此脚本仅包含在需要它的视图中,而不是所有视图中。就您所指出的安全原因而言,在这两种情况下,安全性都严格为0。在这两种情况下,客户端都可以完全访问javascript。因此,如果您正在使用javascript,那么不要考虑任何安全问题,因为根本没有安全问题。RenderSection调用应该在布局中完成,而不是在视图中完成。在视图中定义一个节并在该视图中立即呈现它有什么意义?为什么首先要在部分中加载javascript?Javascript应该在布局中只加载一次。你的设计一定有问题。你想实现什么(请不要回答我:
我想删除第一个视图中加载的函数
)?我也面临同样的问题。解决方案就是@DarinDimitrov所建议的。这种方法的另一个问题是,如果您再次加载部分视图,您的页面中将有多个脚本(相同)。@DarinDimitrov在第一个视图中加载的JS特定于此部分视图,在其他视图中不需要。好的,我可以在布局中加载。但最终剧本可能会非常庞大。当我通过浏览器查看源代码时,我看不到部分视图中调用的JS函数,出于安全原因,这不是更好吗?当我指的是将其放在布局中时,我不是指将整个脚本内联到那里。我的意思是你应该使用一个你应该引用的外部javascript文件。您应该在视图的脚本部分中引用它,以便此脚本仅包含在需要它的视图中,而不是所有视图中。就您所指出的安全原因而言,在这两种情况下,安全性都严格为0。在这两种情况下,客户端都可以完全访问javascript。因此,如果您正在使用javascript,那么不要考虑任何安全问题,因为根本没有安全问题。RenderSection调用应该在布局中完成,而不是在视图中完成。在视图中定义一个节并在该视图中立即呈现它有什么意义?如果我只有一些索引页和很多部分,那么在每个容易包含这些部分的视图(不是部分视图)中都包含脚本。您可以在主视图中包含大量的分区。没关系。请记住,应用程序的最终产品是一个HTML页面。这就是浏览器看到的。浏览器不知道部分是什么意思。所以,不要再去想partials了。考虑应用程序提供的功能,并在每个需要脚本的页面中包含脚本,我需要在布局中加载,因为主屏幕的左侧有一个菜单,右侧是我加载局部视图的地方。您有两种可能:要么使用
Ajax.*
helpers并包含不引人注目的Ajax脚本,要么使用标准helpers并编写javascript来AJAXify化视图中包含的内容。@Shimmy,这是故意的。脚本不属于局部视图。只需在托管这些部分的父视图中注册这些脚本。如果我只有一些索引页和很多部分?您可以在每个容易包含这些部分的视图(而不是部分视图)中包含脚本。您可以在主视图中包含大量的分区。没关系。请记住,应用程序的最终产品是一个HTML页面。这就是浏览器看到的。浏览器不知道部分是什么意思。所以,不要再去想partials了。考虑应用程序提供的功能,并在每个需要脚本的页面中包含脚本,我需要在布局中加载,因为主屏幕左侧有一个菜单,右侧是我加载局部视图的地方。您有两种可能:要么使用
Ajax.*
helpers并包含不引人注目的Ajax脚本,要么使用标准helpers并编写javascript将其AJAXify化