在ASP中绑定嵌套路由到Model.NET MVC4 API控制器



我有一个GET请求的URL是http://foo.com/accounts/123/users/456。对于API控制器,路由将是这样的:

config.Routes.MapHttpRoute(
   name: "DefaultApi",
   routeTemplate: "api/{controller}/accounts/{accountid}/users/{userid}",
   defaults: new { accountid = RouteParameter.Optional, userid = RouteParameter.Optional }
);

控制器将喜欢:

public string Get(string accountid, string userid)
{
     ....
}

所以,与其接收两个参数,还不如让控制器接收一个对象,该对象包含如下参数:

public string Get(Query query)
{
    string accountid = query.AccountID;
    string userid= query.UserID;
}

谢谢你的帮助!

当然。来自ASP。NET网站:

默认情况下,Web API使用以下规则绑定参数:

如果参数是"simple"类型,Web API将尝试从URI获取该值。简单类型包括。net基本类型(int, bool, double,等等),加上TimeSpan, DateTime, Guid,十进制和字符串,以及任何具有类型转换器的类型从字符串转换。(后面有更多关于类型转换器的信息)

对于复杂类型,Web API尝试使用媒体类型格式化器从消息体读取值。

最新更新