2016-08-31 59 views
0

我用下面的代碼在asp core屬性約路由與空參數

[HttpGet] 
    [Route("all/{q:alpha}/{begin:int}/{pageSize:int}/{sortBy:alpha}/{sortOrder:alpha}")] 
    public IActionResult GetAll(string q, int begin, int pageSize, string sortBy, bool sortOrder) 
    { 
     return Json(_repository.GetItemsByPage(q, begin, pageSize, sortBy, sortOrder)); 
    } 

它應該是可能的,「Q」是空的。沒有屬性路由一切工作正常。下面的請求被工作:

http://localhost/api/all/?q=&begin=1&pagesize=3&sortBy=title&sortOrder=false 

有了路由請求中的屬性是:

http://localhost/api/all//1/3/title/false 

如何使之成爲一個空值(Q)工作?

回答

0

根據我的建議,可選參數必須結束。

[HttpGet] 

[Route("all/{begin:int}/{pageSize:int}/{sortBy:alpha}/{sortOrder:alpha}/{q:alpha}")] 
public IActionResult GetAll(string q, int begin, int pageSize, string sortBy, bool sortOrder) 
{ 
    return Json(_repository.GetItemsByPage(q, begin, pageSize, sortBy, sortOrder)); 
} 

通過這你的兩個網址將工作。

http://localhost/api/all/?q=&begin=1&pagesize=3&sortBy=title&sortOrder=false 

http://localhost/api/all/1/3/title/false 

http://localhost/api/all/1/3/title/false/value of q 

現在,如果您的方法有多個可選參數,有多種方法可以解決問題。

http://localhost/api/all/1/3/title/false?q=1&optinal2=value 

或者創建第二個API方法。

+0

謝謝。我在最後移動了可選參數並使用:'{q:alpha?}' –