1. ホーム
  2. asp.net-mvc

[解決済み] ASP.NET MVC アプリケーションのビュー固有の javascript ファイルはどこに置くのですか?

2023-01-22 04:08:19

質問

ASP.NET MVCアプリケーションで、ビュー固有のjavascriptファイルを置くのに最適な場所(どのフォルダなど)は何ですか?

私のプロジェクトを整理するために、私はそれらをビューの .aspx ファイルと並べて置くことができるのが本当に好きです。しかし、~/Views/Action/ フォルダ構造を公開せずにそれを行うとき、それらを参照する良い方法を見つけられませんでした。 そのフォルダ構造の詳細を漏らすことは、本当に悪いことなのでしょうか?

代替案は ~/Scripts または ~/Content フォルダにそれらを置くことですが、ファイル名の衝突を心配しなければならないので、小さな苛立ちを感じます。 しかし、それが正しいことであるならば、それは克服できる苛立ちです。

どのように解決するのですか?

古い質問ですが、誰かがそれを探しに来るかもしれないので、私の答えを置いておきたいと思います。

私もビュー特有のjs/cssファイルをviewsフォルダの下に置きたかったのですが、私がそれをした方法は以下の通りです。

Views のルートにある web.config フォルダで、ファイルを提供するために Web サーバーを有効にするために 2 つのセクションを修正する必要があります。

    <system.web>
        <httpHandlers>
            <add path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
            <add path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
            <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
        </httpHandlers>
        <!-- other content here -->
    </system.web>

    <system.webServer>
        <handlers>
            <remove name="BlockViewHandler"/>
            <add name="JavaScript" path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
            <add name="CSS" path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
            <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
        </handlers>
        <!-- other content here -->
    </system.webServer>

そして、ビューファイルから期待通りにURLを参照することができます。

@Url.Content("~/Views/<ControllerName>/somefile.css")

これは、.js と .css ファイルの配信を許可し、それ以外のファイルの配信を禁止します。