[英]Custom URL Routing to Handle Optional Parameter with C# Controller
我在使用URL
导航到ListPeople
方法时遇到问题。 如果我在我的URL
输入localhost:12345/People?peopleId=405&age=24
它就可以正常工作; 但是,当我将localhost:12345/People?peopleId=405
传递到我的URL
,它返回404
错误。
404错误消息:
"No HTTP resource was found that matches the request URI'http://localhost:12345/People?peopleId=405'."
我怎样才能改变我的路由ListPeople
控制器,它节选BOTH网址?
控制者
[HttpGet]
[ReturnDescription("List of People")]
[CustomActionName("")]
[Description("List of people for given peopleId and age")]
public ApiResponse<Status, IEnumerable<People>> ListPeople(int peopleId, int? age)
{
return _personProject.ListPeople(peopleId, age);
}
成功网址
localhost:12345/People?peopleId=405&age=24
URL失败
localhost:12345/People?peopleId=405
在编写时,您有一个表示url的方法:
/People?peopleId={0}&age={0}
您必须进行一个仅接受peopleId
的重载,因为这样在自动设置方法时,方法只能是一条路由的目标。 我建议建议做一个简单的重载:
public ApiResponse<Status, IEnumerable<People>> ListPeople(int peopleID)
{
return ListPeople(peopleId, null);
}
对不起,我不能写评论。所以我必须在这里写。如果您使用的是api,请检查您的WebApiConfig。 您必须在此配置中定义参数。
喜欢;
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{peopleid}/{age}",
defaults: new { peopleid = RouteParameter.Optional, age = RouteParameter.Optional }
);
只是一个例子。 我想我可以帮你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.