可选参数无法识别

时间:2015-07-02 16:12:28

标签: c# asp.net-web-api2

而不是拥有两个API方法,一个用于获取所有实体并通过ID获取单个实体。我想将这两者合并为唯一一行更改的代码(要执行的lambda)。所以我想我也可以用一个可选参数和一个简单的IF语句来制作一个GET方法,以确定参数是否与0不同。

当我只是做一个简单的GET请求时,我的所有实体都没有问题,但是当我在URL的末尾传递一个ID时,我在调试代码时就无法识别它。

我的网址看起来像(服务是虚拟目录)

http://localhost:55985/Service/api/Operator/5

这是路由问题吗?

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

获取方法

public HttpResponseMessage Get(int machineID = 0)
    {
        using (DAL.Repositories.Repository<MachineOperators> machineOperatorRepo = new DAL.Repositories.Repository<MachineOperators>())
        {
            try
            {
                var operators = machineOperatorRepo.GetAll(y => y.Machine, z => z.Operator).Where(x => x.Operator.Active && x.Machine.Active);

                if (machineID != 0)
                {
                    operators = machineOperatorRepo.GetAll(y => y.Machine, z => z.Operator).Where(x => x.Operator.Active && x.MachineID == machineID);
                }
            }
        }
    }

我在方法上方使用了[HttpGet],但自从删除它。

1 个答案:

答案 0 :(得分:1)

您应该将方法签名更改为public HttpResponseMessage Get(int id),因为{id}无法在您的方法中找到