运行特定于视图的javascript代码

运行特定于视图的javascript代码,javascript,jquery,html,asp.net-mvc-4,Javascript,Jquery,Html,Asp.net Mvc 4,在我的ASP.NETMVC4应用程序中,我在整个站点上为我的函数获得了一个javascript文件。 这工作得很好-但是我想在某些视图中运行某些代码。 通常我会通过简单地在视图中放置一个短的脚本标记来解决这个问题,调用所需的函数。 但是,我在body标记的底部加载了我的js文件,所以这个脚本标记将在加载之前调用一个函数,这显然不起作用 如何从不同的视图调用js文件的各个部分,同时将js文件保存在正文的底部?这里有一些事情 我不会将JavaScript直接放在页面中。原因很多,这不是你问题的重点,

在我的ASP.NETMVC4应用程序中,我在整个站点上为我的函数获得了一个javascript文件。 这工作得很好-但是我想在某些视图中运行某些代码。 通常我会通过简单地在视图中放置一个短的脚本标记来解决这个问题,调用所需的函数。 但是,我在body标记的底部加载了我的js文件,所以这个脚本标记将在加载之前调用一个函数,这显然不起作用


如何从不同的视图调用js文件的各个部分,同时将js文件保存在正文的底部?

这里有一些事情

  • 我不会将JavaScript直接放在页面中。原因很多,这不是你问题的重点,而是我想提出的问题

  • 您可以有一个单独的JS文件,该文件在主JS文件之后加载,主JS文件实际上从“main”调用函数


  • 我的方法是用id标记所述视图:

    <div id="specific-page-name"></div>
    
    这样,您仍然可以将视图与js代码分开

    最后,如果我必须在js中使用模型数据,我可以这样做:

    <div data-model-data="@Model.Data"></div>
    

    我详细介绍了Matt在评论中给出的答案:在你的布局中,你可以指定你想要一些额外的HTML内容(在你的例子中,那将是你的JS)。您需要将其添加到主JS块之后

    @RenderSection("AddScripts", required: false)
    
    @section AddScripts {
    <script type="text/javascript">
     ...
    </script>
    }
    
    然后在视图中,您可以添加一个部分,它不会在视图中呈现,而是在布局的相应部分中呈现(在主JS块之后)

    @节添加脚本{
    ...
    }
    
    将版面页面上的一个部分放在脚本引用下,并将视图脚本放在该部分中
    @RenderSection("AddScripts", required: false)
    
    @section AddScripts {
    <script type="text/javascript">
     ...
    </script>
    }