3

MVCプロジェクトをデプロイしているときに、サーバーに対する相対パスの問題に直面しました。プロジェクトをIISのアプリケーションとしてホストしています。最後に、私のアプリケーションのURLは次のようhttp://localhost/portal/Account/Loginになります。「portal」はIISのアプリケーション名です。ASP.net開発サーバーでは、すべてが正常に機能していました。デプロイ中に、サーバーに対する相対パスが必要でした。このため、私のjqueryajaxリクエストは失敗し始めました。この問題を修正するために、アクションを非表示フィールドに保持し、そこからアクセスしてajaxリクエストに使用しました。以下はコードです。

 <input type="hidden" value="@Url.Action("GetNewOffersSearch", "Updates")" id="NewOffersSearchUrl" />

var NewoffersUrl = document.getElementById("NewOffersSearchUrl").value;


 $.ajax({
            type: 'GET',
            url: NewoffersUrl ,
            cache: false,
            timeout: 10000,
            contentType: "application/json; charset=utf-8",
            success: function (_results) {
                $("#updatesContent").html(_results);
            },
            error: function (_results) {

            }
        });

当初、NewoffersUrlは"/Updates/GetNewOffersSearch"パスエラーをスローしていました。しかし、今ではそれは"/portal/Updates/GetNewOffersSearch"正常に機能しています

私がフォローしているアプローチが正しいかどうかを知りたいだけです。この問題に対するより良い修正はありますか?

4

1 に答える 1

3

リクエストの方法も同様ですAJAXが、非表示フィールドを使用するのではなく、URLをajax呼び出しのurlパラメーターに直接渡します。

$.ajax({
        type: 'GET',
        url: @Url.Action("GetNewOffersSearch", "Updates"),
        cache: false,
        timeout: 10000,
        contentType: "application/json; charset=utf-8",
        success: function (_results) {
            $("#updatesContent").html(_results);
        },
        error: function (_results) {

        }
    });
于 2012-10-09T11:54:54.190 に答える