我试图访问一个js文件在views目录。 我有/Views/Home/MyControl.ascx MVC应用程序 我有一个JS文件/Views/Home/MyControl.js

我想引用js文件并与控制保持它。 我曾尝试在路由以下条目,并没有似乎工作。

        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断裂。

由于 问候 克雷格。

有帮助吗?

解决方案

Views文件夹是,为良好的观点,和javascript应别处放。这就是为什么MVC框架的设计者把web.config在拒绝访问内的任何文件,该文件夹Views。您可以修改此defaut设置,但警告说,这可能是一个潜在的安全漏洞。所以打开位于web.config文件夹中的文件Views

替换:

<httpHandlers>
  <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

使用:

<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

P.S。你也可以删除所有你把IgnoreRoutesglobal.asax

其他提示

这是不是可以使用DefaultHttpHandler更好的解决方案 为HTML资源并保持HttpNotFoundHandler对于所有其它类型的文件

<httpHandlers>  
  <add path="*.html" verb="*" type="System.Web.DefaultHttpHandler"/> 
  <add path="*.*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
</httpHandlers> 

实际上为IIS集成模式,则需要使用System.Web.StaticHttpHandler

<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>

在IIS经典模式显然System.Web.DefaultHttpHandler才起作用。

在MVC 4 I不得不更新处理程序部以及所述HttpHandlers的部分。

我更新与以下Views文件夹中的web.config。

<httpHandlers>
  <add path="*.aspx" verb="*" type="System.Web.HttpNotFoundHandler"/>
  <add path="*.cshtml" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

<handlers>
  <remove name="BlockViewHandler" />
  <add name="BlockViewHandlerRazor" path="*.cshtml" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
  <add name="BlockViewHandlerAspx" path="*.aspx" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top