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

C# 将空白(null)值发送到我的web api服务,c#,asp.net-mvc,asp.net-web-api2,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; } routes.MapRoute

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

public IEnumerable<IEmployee> GetEmployeesByFullName(string firstName, string lastName)
{
    var data = EmployeeDataProvider.GetEmployeeByFullName(firstName, lastName).ToList();
    return data;
}
    routes.MapRoute(
        name: "GetEmployees",
        url: "GetEmployeesByFullName/{firstname}/{lastname}",
        defaults: new { controller = "Default", action = "GetEmployeesByFullName", firstname = UrlParameter.Optional, lastname = UrlParameter.Optional }
    );
public IEnumerable GetEmployeesByFullName(字符串firstName,字符串lastName)
{
var data=EmployeeDataProvider.GetEmployeeByFullName(firstName,lastName).ToList();
返回数据;
}
我希望能够使用first或lastname中的空白值来调用它,但实际上我无法这样做。我只想在URL中这样做

是否无法以某种方式发送
/GetEmployeesByFullName//Doe/
?我是否必须将其作为post数据发送,才能发送空白值

如果我执行了
/GetEmployeesByFullName//Doe/
,我会被告知控制器上没有匹配的操作。
在我的路线中,将参数设置为可选似乎没有任何区别。我只是没有点击这个函数。

正如mostruash指出的,你不能用
/GetEmployeesByFullName//Something
来实现它,因为MVC不支持有两个可选参数。只有最后一个参数是可选的(请参见)。如果您想通过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
如果您有两个参数都将被填写的用例,您可以这样添加路由:

public IEnumerable<IEmployee> GetEmployeesByFullName(string firstName, string lastName)
{
    var data = EmployeeDataProvider.GetEmployeeByFullName(firstName, lastName).ToList();
    return data;
}
    routes.MapRoute(
        name: "GetEmployees",
        url: "GetEmployeesByFullName/{firstname}/{lastname}",
        defaults: new { controller = "Default", action = "GetEmployeesByFullName", firstname = UrlParameter.Optional, lastname = UrlParameter.Optional }
    );

我不确定这一点,但您可以尝试可以执行的可空类型
/GetEmployeesByFullName/
/GetEmployeesByFullName/Something/
,但不能
/GetEmployeesByFullName//Something
。我认为您可能需要为
/GetEmployeesByFirstName/John
/GetEmployeesByLastName/Doe