2016-06-08 30 views
0

工作我有一個的WebAPI方法如下所示的WebAPI屬性路由選擇不與[FromUri]

[HttpGet] 
[Route("students")] 
public string Get([FromUri]Student student) 
{ 
    return "value"; 
} 

和我的webapiconfig是

config.MapHttpAttributeRoutes(); 

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

當我不使用的〔路線( 「..」 )]屬性然後我得到學生對象填充,它是空的,如果我使用[路由(「..」)]。

任何人都可以請幫助如何解決這個問題。

感謝

+1

你要求什麼網址? – klappvisor

+0

當我訪問http:// localhost:65190/students =>學生參數爲null並 –

+0

當我訪問http:// localhost:65190/assets?name = test時,那麼學生參數不爲空 –

回答

2

當您使用[Route("students")]以下網址將匹配http://localhost/students?Name=name&Age=12假設你Student類有NameAge性能。

當您不提供任何查詢參數時,它將爲空並且是預期的行爲。

如果Student對象爲struct將所需的參數,所以您將獲得的WebAPI例外,不爲空

+0

是的。但那是我所期待的。它適用於如果我使用custommodelbinder和[FromUri]屬性。 –

+0

奇怪的是,我的代碼和你的代碼完全一樣,沒有'custommodelbinder'但它只適用於'[FromUri]' – klappvisor