【问题标题】:How to get value of IEnumerable using two parameters如何使用两个参数获取 IEnumerable 的值
【发布时间】:2017-11-13 15:03:12
【问题描述】:

我使用下面的代码,编译时没有失败,但是我输入的代码和参数好像没有正确输入!

public IEnumerable<TimeWorkMonthly> Get(int id,int id1)
{
    using (EmployeeDbEntities Entities = new EmployeeDbEntities())
    {
        var result = Entities.TimeWorkMonthlies.Where(e => e.KartNo == id && e.TermID == id1).ToList();
        return result;
    }
}

在我的浏览器中输入以下地址:

http://localhost:49643/api/Employees/1461/9604

但我收到了404 error

在使用输入 value(id) 时,我从程序中得到了正确的输出。

你认为问题出在哪里?

【问题讨论】:

  • 你需要这个网址:http://localhost:49643/api/Employees/1461?id1=9604
  • 问题与通用IEnumerable接口无关;它只与使用的托管框架的 URL 编码约定有关。
  • 或者在方法上方添加[Route("{id}/{id1}")](或者只是[Route("{id1}")],取决于默认路由)。
  • 旁注:你不需要ToList()Where 方法返回一个IEnumerable,你自己的方法也是如此。
  • 是的,我需要这个网址:localhost:49643/api/Employees/1461?id1=9604

标签: c# linq asp.net-web-api


【解决方案1】:

问题是路由http://localhost:49643/api/Employees/1461/9604没有正确解析参数id1

默认路由看起来像这样(在 WebApiConfig.cs 中):

routes.MapHttpRoute(
    name: "API Default",
    routeTemplate: "api/{controller}/{id}", // only "id" parameter is mapped from URL
    defaults: new { id = RouteParameter.Optional }
);

添加另一个同样映射来自 URL 的 id1 的路由:

routes.MapHttpRoute(
    name: "API with additional Id",
    routeTemplate: "api/{controller}/{id}/{id1}", // URL with TWO parameters
    defaults: new { id = UrlParameter.Optional, id1 = UrlParameter.Optional } 
);

延伸阅读:Routing in ASP.NET Web API.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多