質問

私は、ビューディレクトリ内の.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ファイルを追加することをお勧めしないでください助けてください。 私はそれがこのように動作させる、またはそれを行うことができない理由を知っていると思います。

私はスクリプトのデバッグは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。また、あなたがIgnoreRoutesに入れ、すべてのglobal.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セクションを更新する必要がありました。

私は以下のフォルダビューで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