Javascript 如何在视图中包含js文件。ASP.NETMVC4

Javascript 如何在视图中包含js文件。ASP.NETMVC4,javascript,asp.net-mvc-4,Javascript,Asp.net Mvc 4,我想知道为什么我的js文件在视图中调用时可以工作: @section Scripts { <script> function myFunction() { alert("Hello1"); } </script> } @节脚本{ 函数myFunction(){ 警报(“Hello1”); } } 但当我称之为: @section Scripts { <script type="te

我想知道为什么我的js文件在视图中调用时可以工作:

@section Scripts {  
<script>   

    function myFunction() {
        alert("Hello1");
    }       

</script>
}
@节脚本{
函数myFunction(){
警报(“Hello1”);
}       
}
但当我称之为:

@section Scripts {

   <script type="text/javascript" src="~/Views/Home/script.js"></script>
   <script>   
         myFunction();
    </script>
}
@节脚本{
myFunction();
}

这是因为在
~/Views/
文件夹中无法访问
.js
文件。你必须这么做

要启用对视图文件夹中
.js
文件的访问,您可以将以下内容直接添加到视图文件夹的web.config中的
handlers
标记下:

<add name="JavaScriptHandler"
         path="*.js"
         verb="*"
         preCondition="integratedMode"
         type="System.Web.StaticFileHandler" />

更好的做法是将Js文件放在脚本文件夹中并从那里访问它。您可以在view的头部编写此代码以使用js文件

@Scripts.Render("~/Scripts/script.js")

您必须在Bundle配置中添加脚本:

 public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js",    "~/Views/Home/script.js"));

这对我很有效

您应该将rendersection添加到视图使用的布局页面中

@RenderSection("scripts", required: false)

这两个文件看起来都像
Razor
文件?第一个文件是_布局,第二个文件是使用布局的视图吗?我正在视图中工作。但是使用“@section Scripts”时,我希望在浏览器中运行时将脚本放置在_布局中。谢谢。只是一个旁注。。。实际上,我把脚本放在了Views文件夹中。我做了一些事情,比如在visual studio中有
视图/Home/Contact.cshtml
并嵌套在文件下面(使用扩展名),我有
视图/Home/Contact.js
视图/Home/Contact.less
。然后,我的构建脚本会适当地选择这些文件。实际上,这样做可以节省大量时间。David,你能详细介绍一下你的构建脚本的功能吗?我也喜欢这个想法,我正在花很多时间努力寻找相关文件…@codea抱歉,这让人困惑。因为我有一个构建脚本,它可以缩小并连接脚本,而不是让它在脚本文件夹中搜索脚本-
~/scripts/***.js
-它搜索视图文件夹-
~/Views/***.js
,因为它们现在存储在那里。
@RenderSection("scripts", required: false)