5

ビューディレクトリの.jsファイルにアクセスしようとしています。/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ファイルを追加することを提案しないでください。私はそれをこのように機能させるか、なぜそれができないのかを知りたいです。

スクリプトをページに配置しますが、VS2010B2ではスクリプトのデバッグのみが機能しません。

よろしくクレイグありがとう。

4

4 に答える 4

8

このViewsフォルダーはビューに適しているため、javascriptは別の場所に配置する必要があります。そのため、MVCフレームワークの設計者は、内部のファイルへのアクセスを拒否するweb.configをこのフォルダーに配置します。Viewsこのデフォルト設定を変更することはできますが、これは潜在的なセキュリティホールになる可能性があることに注意してください。したがって、フォルダ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

PSあなたがIgnoreRoutes入れたすべてを削除することもできますglobal.asax

于 2009-11-19T19:16:39.080 に答える
6

これは、HTMLリソースにDefaultHttpHandlerを使用し、他のすべてのタイプのファイルにHttpNotFoundHandlerを保持することでより良い解決策ではないでしょうか。

<httpHandlers>  
  <add path="*.html" verb="*" type="System.Web.DefaultHttpHandler"/> 
  <add path="*.*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
</httpHandlers> 
于 2010-07-20T15:45:30.583 に答える
1

実際、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>

どうやらSystem.Web.DefaultHttpHandlerIISクラシックモードでのみ動作します。

于 2012-10-22T12:04:49.297 に答える
0

MVC 4では、ハンドラーセクションとhttpHandlersセクションを更新する必要がありました。

ビューフォルダの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>
于 2013-10-19T04:08:19.197 に答える