Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ASP.NET MVC-如果不想将.js文件存储在/Scripts中,您会将它们放在哪里?_Javascript_Asp.net Mvc_Resources_Controller_Routes - Fatal编程技术网

Javascript ASP.NET MVC-如果不想将.js文件存储在/Scripts中,您会将它们放在哪里?

Javascript ASP.NET MVC-如果不想将.js文件存储在/Scripts中,您会将它们放在哪里?,javascript,asp.net-mvc,resources,controller,routes,Javascript,Asp.net Mvc,Resources,Controller,Routes,我有许多.js文件,我希望将它们存储在与其视图相同的目录中(它们特定于一个视图-这只是为了将javascript与视图的HTML分开) 但是,将它们添加到/Views/ControllerName/目录将不起作用,因为当向Web服务器请求.js文件时: <script type="text/javascript" src="/Views/ControllerName/myscript.js"></script> routes.IgnoreRoute("{resource

我有许多.js文件,我希望将它们存储在与其视图相同的目录中(它们特定于一个视图-这只是为了将javascript与视图的HTML分开)

但是,将它们添加到
/Views/ControllerName/
目录将不起作用,因为当向Web服务器请求.js文件时:

<script type="text/javascript" src="/Views/ControllerName/myscript.js"></script>
routes.IgnoreRoute("{resource}.js/{*pathInfo}");

然而,我似乎无法让它工作?

想想你的最后一句话——这可能就是为什么为这些设置了一个特定的目录(/Scripts/);)

我想你有两个选择

  • 在脚本下重新创建视图文件夹结构,并将其存储在脚本目录中相同的相对位置
  • 不要将它们保存在单独的文件中,而是在脚本部分的母版页中使用单独的内容占位符(通常位于正文的底部)
  • 您也可以将它们存储在任何非“特殊”文件夹中,但我认为如果您将它们分开,脚本是正确的位置


    我通常将常用脚本(由多个页面使用)保存在scripts文件夹中,没有相应的视图层次结构,并在视图文件中保存特定于页面的脚本,但保存在单独的ContentPlaceHolder中。对我来说,重要的不是将JS保存在单独的文件中,而是与内容分开。使用不同的ContentPlaceHolder即可完成此操作。

    已解决

    在找到并测试了一些我无法工作的帖子(最具决定性的帖子)后,以下解决了这个难题:

    Global.asax
    中,将以下代码添加到
    RegisterRoutes
    方法中:

    routes.IgnoreRoute("{file}.js");
    

    这里有一篇很好的文章描述了这一点和其他活动

    我想将javascript保存在文件中的原因是浏览器会缓存它。内联javascript无法缓存。如果我错了,请纠正我!Thanks@Jimbo-你真的有足够的特定于页面的javascript来担心浏览器缓存它吗?另外,不要忘记,您将为每个javascript文件生成一个额外的同步请求。根据我的经验,我没有超过几百字节的javascript,当然每页也不超过1K字节。如果启用了输出压缩,就不值得为维护单独的文件而烦恼了。事实上,这些页面的脚本高达20kb,用户将使用的连接速度约为1.5KB/s:(你知道如何添加路由处理程序来忽略.js文件请求吗?你的回答对我来说不起作用。这对我有帮助: