2012-07-18 141 views
0

这里是我如何进行路由设置。如何处理asp.net web api中的查询字符串参数

routes.MapHttpRoute(
         name: "Authors", 
         routeTemplate: "api/authors", 
         defaults: new { controller = "authors" } 
        ); 

控制器的操作方法

// GET /api/authors/ 
    public string GetAuthors(string author_ids) 
    { 
     return data; 
    } 

网址http://site.com/api/authors?author_ids=1实际调用控制器动作,但是当我没有通过查询字符串参数,它说没有找到控制器动作匹配。

如何在定义路由时处理可选的查询字符串参数?

回答

0
// GET /api/authors/ 
    public IEnumerable<string> GetAuthors() 
    { 
     return data; 
    } 

您将需要定义一个不带参数的操作。

这将是更好的,但是,加上id给您的路线可选:

routes.MapHttpRoute(
         name: "Authors", 
         routeTemplate: "api/{controller}/{id}", 
         defaults: new { id = RouteParameter.Optional } 
        ); 
0

你可以具体,如:

routes.MapHttpRoute(
    name: "Authors", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

和行动可以是:

​​

这只会匹配查询字符串[FromUri]让参数从查询字符串中获取。

0

你可能喜欢特定:

routes.MapHttpRoute(
    name: "Authors", 
    routeTemplate: "api/{controller}/{author_ids}", 
    defaults: new { author_ids = RouteParameter.Optional } 
); 
相关问题