繁体   English   中英

自定义URL路由以使用C#控制器处理可选参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM