2016-06-08 60 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