MVC部署 - 与应用程序路径有关的相对路径问题

时间:2012-10-09 11:50:17

标签: javascript jquery asp.net-mvc asp.net-mvc-3 iis-7

在部署我的MVC项目时,我遇到了相对路径w.r.t服务器的问题。 我将该项目作为IIS中的应用程序托管。最后,我的应用程序的URL看起来像http://localhost/portal/Account/Login这里'portal'是IIS中的应用程序名称。在ASP.net开发服务器中一切正常。而部署它需要相对于服务器的相对路径。因此我的jquery ajax请求开始失败。 为了解决这个问题,我将操作保存在隐藏字段中,并从那里访问并使用forjax请求。以下是代码。

 <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"并且工作正常

我只是想知道我所遵循的方法是否正确。对于这个问题有没有更好的解决方法?

1 个答案:

答案 0 :(得分: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) {

        }
    });