首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.MVC中的IgnoreRoute

ASP.MVC中的IgnoreRoute
EN

Stack Overflow用户
提问于 2009-11-20 03:00:11
回答 4查看 7.6K关注 0票数 5

我正在尝试访问视图目录中的.js文件。我有一个带有/Views/Home/MyControl.ascx的MVC应用程序,还有一个js文件/Views/Home/MyControl.js

我希望引用.js文件并将其与控件一起保存。我在路由中尝试了以下条目,但似乎都不起作用。

代码语言:javascript
复制
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{file}.js");
        routes.IgnoreRoute("{resource}.js/{*pathInfo}");
        routes.IgnoreRoute("{controller}/{resource}.js/{*pathInfo}");
        routes.IgnoreRoute("{*alljs}", new { alljs = @".*\.js(/.*)?" });

请帮助,请不要建议将.js文件添加到脚本目录。我想让它以这种方式工作,或者知道为什么它不能做到。

我会将脚本放到页面中,只有脚本调试在VS2010 B2中会中断。

感谢克雷格的问候。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-20 03:16:39

Views文件夹非常适合视图,而javascript应该放在其他地方。这就是为什么MVC框架的设计者在这个Views文件夹中放了一个web.config,它拒绝访问里面的任何文件。您可以修改此默认设置,但需要注意这可能是一个潜在的安全漏洞。因此,打开位于Views文件夹中的web.config文件,然后:

替换:

代码语言:javascript
复制
<httpHandlers>
  <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

通过以下方式:

代码语言:javascript
复制
<httpHandlers>
  <add path="*.aspx" verb="*" type="System.Web.HttpNotFoundHandler"/>
  <add path="*.master" verb="*" type="System.Web.HttpNotFoundHandler"/>
  <add path="*.ascx" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

导航到http://yoursite/Views/test.js

附言:你也可以删除你放在global.asax中的所有IgnoreRoutes

票数 8
EN

Stack Overflow用户

发布于 2010-07-20 23:45:31

这不是一个更好的解决方案吗?对html资源使用DefaultHttpHandler,对所有其他类型的文件使用HttpNotFoundHandler

代码语言:javascript
复制
<httpHandlers>  
  <add path="*.html" verb="*" type="System.Web.DefaultHttpHandler"/> 
  <add path="*.*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
</httpHandlers> 
票数 6
EN

Stack Overflow用户

发布于 2012-10-22 20:04:49

实际上,对于IIS集成模式,您需要使用System.Web.StaticHttpHandler

代码语言:javascript
复制
<httpHandlers>
  <add path="*.css" verb="*" type="System.Web.StaticHttpHandler"/> 
  <add path="*.js" verb="*" type="System.Web.StaticHttpHandler"/> 
  <add path="*.*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
</httpHandlers>

显然,System.Web.DefaultHttpHandler只能在IIS经典模式下工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1765726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档