从JQuery调用Area中的Controller Action

时间:2014-05-28 21:57:46

标签: jquery asp.net-mvc-5

我正在使用ASP.NET MVC5开发Web应用程序。该应用程序在整个站点中使用全局脚本来检索用户数据。

点击,ajax调用返回到url,例如为了Area1/Controller/Action,它接收用户数据。这在网站的根目录中工作正常。一旦你开始在区域工作,它将返回404。

如果我开始查看Area1,请求网址将变为Area1/Controller/Area1/Controller/Action 我真的不想在javascript中为ajax调用添加完整的http://网址。还有哪些其他选项可以确保找到正确的URL?

2 个答案:

答案 0 :(得分:2)

你有没有尝试过:

url: '@Url.Action("Action", "Controller", new { area = "Area1"    } )',

答案 1 :(得分:1)

我最终将域添加到我的帮助器类中,该类在我的应用程序中是全局的。然后我可以在需要时调用它。

var Helpers = {
    Domain:'http://' + location.hostname + ':' + location.port
};

现在当我跨区域进行ajax调用时,我可以调用Domain

var options = {
    type: 'POST',
    url: Helpers.Domain + '/Area1/Controller/Action',
    data: JSON.stringify({'username': user }),
    success: function (events) {
        ...
    },
    error: function (jqXHR, textStatus, errorThrown) {
        ...
    }
};

$.ajax(options);