2

MVC アプリケーションがあります。About.cshtml に次の変更を加えたのは、基本的なセットアップです。

@{
    ViewBag.Title = "About Us";
}
<script src=@Url.Content("~/Scripts/test.js") type="text/javascript"></script>
<h2>About</h2>
<p>
     Put content here.
</p>

そのため、外部スクリプトへの参照を追加しました。

スクリプト自体には次のものが含まれます。

$(document).ready(function () {

    $.post('/Home/GetResult', null, function (data) {

        alert(data);

    });

});

ホームコントローラーで呼び出されるメソッドは次のとおりです。

public int GetResult()
        {
            return 3;
        }

したがって、ユーザーがクリックして GetResult メソッドが呼び出され、3 を含むアラートがポップアップする基本的な設定です。

そこで、IIS でこれを Web サイトとして設定したところ、期待どおりに動作しました。[About] をクリックすると、メッセージがポップアップ表示され、ウェブサイトにアドレスが表示されますhttp://localhost:xx/Home/About

次に、仮想ディレクトリとして設定してみました。

[バージョン情報] をクリックしても、メッセージは表示されません。どこに行くかの URL は次のとおりです。http://localhost:xx/Practise/Home/Aboutここで、practice は仮想ディレクトリの名前です。

では、なぜメッセージが表示されないのでしょうか。

URL に仮想ディレクトリ名が含まれているため、ファイルを見つけることができなくなりましたか?

仮想ディレクトリとしてホストする必要がある場合、これを修正する最善の方法は何ですか?

4

2 に答える 2

1

ハードコーディングされた URL は使用しないでください。みたいにやってみる

$(document).ready(function () {

    $.post('@Url.Action("GetResult", "Home")', null, function (data) {

        alert(data);

    });

});

常に Url ヘルパー関数を使用すると、実際の物理名が処理されます

于 2012-07-24T21:50:18.883 に答える