C# WebApi属性路由不使用[FromUri]
我有一个webapi方法,如下所示C# WebApi属性路由不使用[FromUri],c#,asp.net-web-api2,C#,Asp.net Web Api2,我有一个webapi方法,如下所示 [HttpGet] [Route("students")] public string Get([FromUri]Student student) { return "value"; } 我的网络配置是 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api
[HttpGet]
[Route("students")]
public string Get([FromUri]Student student)
{
return "value";
}
我的网络配置是
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
当我不使用[Route(“…”)属性时,我会填充student对象,如果我使用[Route(“…”),则该对象为空
谁能帮我解决这个问题
谢谢当您使用[路线(“学生”)]
以下URL将匹配http://localhost/students?Name=name&Age=12
假设您的学生
班级有姓名
和年龄
属性
当您不提供任何查询参数时,它将为null,这是预期的行为
如果Student
对象是一个struct
,它将是必需的参数,因此当您使用[Route(“students”)]时,您将从WebApi获得异常,而不是null
以下URL将匹配http://localhost/students?Name=name&Age=12
假设您的学生
班级有姓名
和年龄
属性
当您不提供任何查询参数时,它将为null,这是预期的行为
如果您
Student
对象是一个struct
,它将是必需的参数,因此您将从WebApi获得异常,而不是null,只需检查它是否为null即可
[HttpGet]
[Route("students")]
public string Get([FromUri] Student student)
{
if (student == null)
student = new Student();
return "value";
}
简单地说,检查它是否为null
[HttpGet]
[Route("students")]
public string Get([FromUri] Student student)
{
if (student == null)
student = new Student();
return "value";
}
您请求的URL是什么?当我访问=>student参数为空时,当我访问时,如果student参数不是空时,请添加
student
定义,它可能有助于诊断问题。您请求的URL是什么?当我访问=>student参数为空时,当我访问时,如果student参数不是Null,请添加student
定义,它可能有助于诊断问题。是。但这正是我所期待的。如果我将custommodelbinder与[FromUri]属性一起使用,它会起作用。奇怪的是,我的代码与您的代码完全相同,并且它在没有custommodelbinder
的情况下对我有效,但仅在[FromUri]
是的情况下有效。但这正是我所期待的。如果我将custommodelbinder与[FromUri]属性一起使用,它会起作用。奇怪的是,我的代码与您的代码完全相同,并且它在没有custommodelbinder
的情况下对我有效,但仅在[FromUri]