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

时间:2014-06-25 02:38:36

标签: api asp.net-mvc-4 controller asp.net-mvc-routing

我有一个带有http://foo.com/accounts/123/users/456网址的GET请求。对于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;
}

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

绝对。来自ASP.NET site

  

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

     

如果参数是“简单”类型,Web API会尝试从URI中获取值。简单类型包括.NET基元类型   (int,bool,double等),加上TimeSpan,DateTime,Guid,   十进制和字符串,加上任何类型转换器都可以   从字符串转换。 (稍后将详细介绍类型转换器。)

     

对于复杂类型,Web API尝试使用媒体类型格式化程序从邮件正文中读取值。