4

やあ、

MasterPage で次のリンクを使用する ASP.NET MVC サイトがあります。

<script type="text/javascript" src="../../../Scripts/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" src="../../../Scripts/jquery-ui-1.8.11.custom.min.js"></script>
    <script type="text/javascript" src="../../../Scripts/jquery.cascadingDropDown.js"></script>
    <script type="text/javascript" src="../../../Scripts/jquery.maskedinput-1.2.2.js"></script>

これは、Visual Studio 2010 のビルトイン IIS およびホスト (IIS7) で実行すると正常に機能します。しかし、自分の IIS7 で Default Web Site \ MySite の下に展開すると、スクリプトは次のようなパスを取得します。

http://localhost/Scripts/jquery.cascadingDropDown.js

それ以外の :

http://localhost/myPage/Scripts/jquery.cascadingDropDown.js

これが VS IIS とホスト IIS では機能するのに、ローカル コンピューター IIS では機能しないのはなぜですか?

これ以外のウェブページは問題ありません。

4

1 に答える 1

7

ASP.NET MVC で 2 つの絶対に基本的なルールを繰り返します。

  1. あなたがしたように URL をハードコーディングしないでください

  2. ASP.NET MVC アプリケーションで URL を処理するときは、常に Url ヘルパーを使用してください。

私は、この膨大な数の同様の質問を何億回も繰り返してきましたが、それでも人々がハードコーディングしているのを見ています。

したがって、Razor を使用している場合:

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.8.11.custom.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.cascadingDropDown.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.maskedinput-1.2.2.js")"></script>

また、WebForms ビュー エンジンを使用している場合:

<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery-1.4.4.min.js") %>"></script>
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery-ui-1.8.11.custom.min.js") %>"></script>
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery.cascadingDropDown.js") %>"></script>
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery.maskedinput-1.2.2.js") %>"></script>

ASP.NET MVC 4 (Razor 2.0) を使用している場合は、次のような巧妙なトリックがあります。

<script type="text/javascript" src="~/Scripts/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="~/Scripts/jquery-ui-1.8.11.custom.min.js"></script>
<script type="text/javascript" src="~/Scripts/jquery.cascadingDropDown.js"></script>
<script type="text/javascript" src="~/Scripts/jquery.maskedinput-1.2.2.js"></script>

~/?に注意してください。WebPages 2.0 はUrl.Content、実行時に を自動的に適用して正しい URL を生成します。

于 2012-06-22T10:03:18.410 に答える