从区域中调用jQuery中的ASP.NET Web API

时间:2014-10-29 06:54:29

标签: jquery asp.net-mvc asp.net-web-api

我有一个名为MyArea的区域的ASP.NET MVC项目。在那里的视图,索引,在底部包含这个javascript(在点击按钮期间触发):

<script>
    function x() {
        var url = WebApi.Url() + "orders";
        url = "http://localhost:43292/api/employees";
        $.ajax({
            type: "GET",
            contentType: "application/json",
            url: url,
            dataType: "json",
            success: function (result) {
                alert(result);
            },
            error: function (xhr, err) {
                alert(xhr.status);
            }
        });
    }
</script>

Web API是这样的:

[Route("api/employees")]
[HttpGet]
public IEnumerable<Employee> Get()
{
    List<Employee> employees = null;

    //... get employees

    return employees;
}

但它始终返回“未找到资源”。 我认为当它在区域内时是一个问题,因为当我在一个不在区域内的视图中移动相同的脚本时,Web API会被成功调用。

有人可以对此有所了解吗?感谢。

哦,如果有帮助,我正在使用MVC 5.

修改

当我尝试一个简单的骨骼项目时,看起来它就像SBirthare所说的那样。我认为问题在于我改变了区域路由配置。由于我希望该区域成为默认页面,因此我在其路由配置中删除了前导区域名称。所以来自:

context.MapRoute(
    "Employee_default",
    "Employee/{controller}/{action}/{id}",
    new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
);

// No leading Employee
context.MapRoute(
    "Employee_default",
    "{controller}/{action}/{id}",
    new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
);

在调用Web API时,删除前导区域名称会导致“找不到资源(404)”。

所以我的问题是在这种情况下我能做些什么才能使这项工作?

0 个答案:

没有答案