将空(null)值发送到我的web api服务

时间:2014-08-19 10:55:34

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

我的web api控制器中有一个小功能,如下所示:

public IEnumerable<IEmployee> GetEmployeesByFullName(string firstName, string lastName)
{
    var data = EmployeeDataProvider.GetEmployeeByFullName(firstName, lastName).ToList();
    return data;
}

我希望能够在第一个或最后一个名字中使用空白值来调用它,但我真的无法这样做。我想简单地在URL中进行。

不可能以某种方式发送/GetEmployeesByFullName//Doe/吗?我是否必须将其作为发布数据发送,以发送空白值?

如果我/GetEmployeesByFullName//Doe/我被告知控制器上没有匹配的操作。 在我的路线中将参数设置为可选参数似乎没有任何区别。我根本就没有点击这个功能。

1 个答案:

答案 0 :(得分:1)

正如mostruash指出的那样,你不能用/GetEmployeesByFullName//Something来做,因为MVC不支持有两个可选参数。只有最后一个参数可以是可选的(参见this stackoverflow question)。如果您想通过URL进行操作,为什么不简单地将其声明为参数:

/GetEmployeesByFullName?firstname=xxx&lastname=yyy

通过这种方式,两者都可以为空:

/GetEmployeesByFullName?firstname=xxx // the method is called with lastname = null
/GetEmployeesByFullName?lastname=yyy // the method is called with firstname = null

如果您具有将填写两个参数的用例,您可以添加如下路径:

    routes.MapRoute(
        name: "GetEmployees",
        url: "GetEmployeesByFullName/{firstname}/{lastname}",
        defaults: new { controller = "Default", action = "GetEmployeesByFullName", firstname = UrlParameter.Optional, lastname = UrlParameter.Optional }
    );