JavaScript コードを使用して MVC Web API を呼び出します。現在のパスが次の場合、正常に動作します。
http://localhost/myApp/Administrator
ただし、現在のパスが次の場合は失敗します。
http://localhost/myApp/Administrator/
エラーが発生しますThe resource cannot be found
。以下はコードです:
$.getJSON("api/UserApi",
function (data) {
...
});
コードで絶対 URL を使用したくありません。例:
$.getJSON("http://localhost/myApp/api/UserApi",
function (data) {
...
});
絶対 URL は問題なく機能しますが、柔軟性に欠けます。以下と同じことを行う方法はありますか?
$.getJSON("~/api/UserApi",
function (data) {
...
});
ASP.NET は、"~" 文字を現在のアプリケーションのルート パスに置き換えることをサポートしています。例:
http://localhost/myApp
ただし、「~」文字は JavaScript ファイルではサポートされていません。どうすれば同じことを達成できますか?
JavaScript は、 のような ASP.NET ステートメントを使用できないスタンドアロン ファイルにありますUrl.Content
。それを行うより良い方法はありますか?
以下の方法を見つけました。より良い解決策はありますか?:
1) 以下のコードを .cshtml ファイルに記述します。
<script type="text/javascript">
var currentDomain = '@Url.Content("~")';
</script>
2) currentDomain
.js ファイルから変数を読み取ります。
$.getJSON(currentDomain + "/api/UserApi",
function (data) {
...
});