WebApi属性路由无法与[FromUri]一起使用

时间:2016-06-08 10:46:09

标签: c# asp.net-web-api2

我有一个webapi方法,如下所示

[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 }
    );

当我不使用[Route(" ..")]属性时,我会填充学生对象,如果我使用[Route(" ..&#34)则为null ;)]

任何人都可以帮忙解决这个问题。

由于

2 个答案:

答案 0 :(得分:2)

当您使用[Route("students")]时,假设您的http://localhost/students?Name=name&Age=12班级有StudentName属性,则以下网址将与Age匹配。

当您不提供任何查询参数时,它将为null并且是预期的行为。

如果Student对象是struct,则它将是必需参数,因此您将从WebApi获取异常,而不是null

答案 1 :(得分:0)

简单地,检查其是否为空

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