在MVC API中发布发布参数

时间:2016-12-20 18:13:47

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

我在网站上有一个Web API。如果api调用中没有参数,那么我可以点击它,但如果它上面有参数,那么我就无法点击它。以下是我所说的一个例子。

[HttpGet]
public string GetFacilityName2()
{
    return "Good";
}

[HttpGet]
public string GetFacilityName(string projectNumber)
{
    return "Never Get Here";
}

此时我的配置路由是默认路由。

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

我正在使用以下两个网址。有效的网址是http://localhost/api/Controller/GetFacilityName2

无法使用的网址是http://localhost/api/Controller/GetFacilityName?projectNumber=44

UPDATE 我在API上有第三种方法就是这个。

[HttpGet]
public Address GetWorkplaceAddress(string projectNumber)
{
     return new Address();
}

当我从API中删除它时,另一种方法开始工作。地址定义如此。

public class Address
{
    public int Id { get; set; }
    public string AddressValue { get; set; }
    public string City { get; set; }
    public int? State { get; set; }
    public string Zip { get; set; }
    public int? Country { get; set; }
}

1 个答案:

答案 0 :(得分:2)

您不能通过参数重载控制器上的操作,该参数是您当前编写代码的方式。

您可以使用

指定要通过名称进行的操作
  • RouteAttribute
  • 路线模板routeTemplate: "api/{controller}/{action}/{id}",

OR 您可以通过Http动词(Get,Post,Put等)指定它,这是当前正在进行的操作。