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

时间:2010-05-19 12:22:49

标签: javascript asp.net-mvc resources controller routes

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

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

<script type="text/javascript" src="/Views/ControllerName/myscript.js"></script>

它基本上是针对'视图'控制器,它显然不存在。

更新

根据我的阅读,在global.asax.cs RegisterRoutes方法中添加以下IgnoreRoute应该允许访问任何请求的.js文件:

routes.IgnoreRoute("{resource}.js/{*pathInfo}");

然而,我似乎无法让它发挥作用?

3 个答案:

答案 0 :(得分:3)

<强>解决

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

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

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

此处有一篇很棒的帖子介绍了这个和其他活动here

答案 1 :(得分:0)

我认为你有两种选择。

  1. 在脚本下重新创建Views文件夹结构,并将它们存储在scripts目录中的相同位置。
  2. 不要将它们保存在单独的文件中,而是在MasterPage中为脚本部分使用单独的ContentPlaceHolders(通常位于正文的底部)。
  3. 您也可以将它们存储在任何非“特殊”文件夹中,但我认为如果您将脚本分开,脚本就是正确的位置。

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

答案 2 :(得分:-1)

考虑你的最后一句话 - 这可能就是为什么特定目录(/ Scripts /)被搁置的原因? ;)