2012-07-18 90 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 } 
); 
相關問題