如何在视图中包含js文件.ASP.NET MVC 4

efr*_*nx3 18 javascript asp.net-mvc-4

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

@section Scripts {  
<script>   

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

</script>
}
Run Code Online (Sandbox Code Playgroud)

但是当我打电话时它不起作用:

@section Scripts {

   <script type="text/javascript" src="~/Views/Home/script.js"></script>
   <script>   
         myFunction();
    </script>
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*ret 25

这是因为 .js文件~/Views/夹中无法访问文件.你必须启用它.

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

<add name="JavaScriptHandler"
         path="*.js"
         verb="*"
         preCondition="integratedMode"
         type="System.Web.StaticFileHandler" />
Run Code Online (Sandbox Code Playgroud)

或者将您的脚本放入~/Scripts/文件夹并引用它,如下所示:

@Scripts.Render("~/Scripts/script.js")
Run Code Online (Sandbox Code Playgroud)

  • 只是一个旁注......我实际上将我的脚本放在Views文件夹中.我喜欢使用`Views/Home/Contact.cshtml`并嵌套在visual studio中的文件下面(使用[NestIn](https://visualstudiogallery.msdn.microsoft.com/9d6ef0ce-2bef-4a82-9a84-7718caa5bb45) )扩展)我有`Views/Home/Contact.js`和`Views/Home/Contact.less`.然后我的构建脚本适当地拾取文件.这实际上是节省时间的好时机. (2认同)

Cyb*_*cop 9

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

@Scripts.Render("~/Scripts/script.js")
Run Code Online (Sandbox Code Playgroud)