如何在一个区域内的ApiController中获取动作的Url?

时间:2015-09-25 15:22:26

标签: angularjs asp.net-mvc

我有一个名称为 admin 的区域,我在此区域中有一个名为 ProductPicture $("div").eq($("div").length-1) ,在此控制器中我有行动名称 AddProductPicture ,我想从视图(位于同一区域)调用此操作,
所以我写了

ApiController

用于访问它,但它不起作用,并且控制台给我错误404,有什么问题?

编辑:我已将此代码添加到 $upload.upload({ url:'/Admin/api/ProductPicture/AddProductPicture', fields:$routeParams.ProductId, file: file }) 中的WebApiConfig

App_Start

以及网络标签中的网址: public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); config.Routes.MapHttpRoute( name: "API Area", routeTemplate: "Admin/api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ) } 但它不起作用!!

2 个答案:

答案 0 :(得分:0)

您需要为管理区域注册路线。

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        ...

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        // ***** This is what you need *****
        config.Routes.MapHttpRoute(
            name: "AdminDefaultApi",
            routeTemplate: "Admin/api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

答案 1 :(得分:0)

您可以发送ApiController和路由配置的代码吗?您还可以在浏览器中打开开发人员工具,查看“网络”选项卡,查看实际调用的路径。