我的web api控制器中有一个小功能,如下所示:
public IEnumerable<IEmployee> GetEmployeesByFullName(string firstName, string lastName)
{
var data = EmployeeDataProvider.GetEmployeeByFullName(firstName, lastName).ToList();
return data;
}
我希望能够在第一个或最后一个名字中使用空白值来调用它,但我真的无法这样做。我想简单地在URL中进行。
不可能以某种方式发送/GetEmployeesByFullName//Doe/
吗?我是否必须将其作为发布数据发送,以发送空白值?
如果我/GetEmployeesByFullName//Doe/
我被告知控制器上没有匹配的操作。
在我的路线中将参数设置为可选参数似乎没有任何区别。我根本就没有点击这个功能。
答案 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 }
);