3

私のアプリケーションは、別の仮想ディレクトリの下のサーバーにあります。私の ASP.NET MVC アプリケーションにアクセスするには、ユーザーは次の場所に移動する必要があります。

http://server-dev/superApp

「superApp」ディレクトリ部分を無視する Ajax/Json サーバー リクエストに問題があります。Ajax リクエストが行われるたびに、Fiddler は 404 を表示します。http://server-dev/superApp/User/GetUsersJsonたとえば、代わりにhttp://server-dev/User/GetUsersJsonが呼び出されるためです (superApp 名が欠落していることに注意してください)。

Ajax リクエストの例:

function GetUsers(id) {
    $.ajax({
        url: "/User/GetUsersJson/",
        data:{ id: id},
        datatype: 'json',
        type:'post',
        success: function (result) {
            ////Do stuff with returned result
        }        
    });      
}

登録ルート:

r.Match("User/GetUsersJson", "User", "GetUsersJson");

アプリケーションの仮想フォルダが常にすべての URL 要求に含まれるようにするには、どこを確認し、何を変更すればよいですか?

ps すべての Javascript/Ajax ロジックは個別の .js ファイルに保持されるため、RAZOR 構文は使用できないことに注意してください。

4

3 に答える 3

4

HTML ヘルパー メソッドを使用してみましたか?

url: "@Url.ACtion("GetUsersJson","User)"

編集:コメントによると

HTMLヘルパーメソッドを使用してパス名を取得し、それをグローバル変数に保持して、外部javascriptファイルでアクセスすることができます

ビューで

<script type="text/javascript>
  var globalGetJSONPath='@Url.ACtion("GetUsersJson","User)';
</script>

そして、このように外部ファイルで使用できるようになりました

 $.ajax({
        url: globalGetJSONPath,
        data:{ id: id},
        //remaining items....

  });
于 2012-07-24T18:39:23.110 に答える
1

ホスト名+ vdirを含む変数をjsに渡すことで、この問題を解決しました。重い js url 生成のため。
それ以外の場合は、Shyju の回答がこれを解決する最善の方法です。

于 2012-07-24T18:40:48.330 に答える
1

サーバー側のコード生成なしにそれを行う方法はありません。最も簡単なのは、アプリケーションのルートを保持するグローバル変数 (申し訳ありません) を定義し、マスター ページのどこかで初期化することです。

ルート URL の Javascript 生成は、常に asp.net mvc の最も厄介な部分の 1 つでした。

于 2012-07-24T18:43:08.553 に答える