1. ホーム
  2. asp.net

[解決済み] ASP.NET MVC 相対パス

2022-11-23 04:19:57

質問

私のアプリケーションでは、しばしば相対パスを使用する必要があります。例えば、JQueryを参照する場合、通常はこのようにします。

<script type="text/javascript" src="../Scripts/jquery-1.2.6.js"></script>

MVCに移行した今、ルートからの相対パスで、ページが持つかもしれない異なるパスを考慮する必要があります。これはもちろん、過去に URL を書き換えたときの問題でしたが、一貫したパスを使用することで何とか回避できました。

標準的な解決策は、次のような絶対パスを使用することであることは承知しています。

<script type="text/javascript" src="/Scripts/jquery-1.2.6.js"></script>

というのは、開発サイクル中に、アプリを仮想ディレクトリで実行するテスト マシンにデプロイする必要があるからです。ルートが変更されると、ルート相対パスは機能しません。また、メンテナンス上の理由から、テストをデプロイしている間、すべてのパスを単純に変更することはできません - それはそれ自体が悪夢となるでしょう。

それでは、最良の解決策は何でしょうか?

編集する

この質問はまだ閲覧や回答があるので、Razor V2 の時点でルート相対 URL のサポートが組み込まれていることに注意して更新することが賢明かと思います。

<img src="~/Content/MyImage.jpg">

をサーバサイドの構文無しで実行し、ビューエンジンは自動的に ~/ を現在のサイトルートが何であれ置き換えます。

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

これを試してみてください。

<script type="text/javascript" src="<%=Url.Content("~/Scripts/jquery-1.2.6.js")%>"></script>

または MvcContrib を使って、こうすることもできます。

<%=Html.ScriptInclude("~/Content/Script/jquery.1.2.6.js")%>