C# 使用路由属性时模型为空
在我的C# 使用路由属性时模型为空,c#,asp.net-mvc,asp.net-web-api,routing,C#,Asp.net Mvc,Asp.net Web Api,Routing,在我的WebAPI中,我有一个模型 public class ListRequest { public int Skip { get; set; } = 0; public int Take { get; set; } = 30; } 我的行动是 [HttpGet] [Route("api/users")] public IHttpActionResult Get([FromUri] ListRequest request) { ... } 我需要有可
WebAPI
中,我有一个模型
public class ListRequest
{
public int Skip { get; set; } = 0;
public int Take { get; set; } = 30;
}
我的行动是
[HttpGet]
[Route("api/users")]
public IHttpActionResult Get([FromUri] ListRequest request) {
...
}
我需要有可能不传递任何查询参数,然后应该使用默认值。但是,当我转到http://localhost:44514/api/users
请求为空。如果我删除[Route(“api/users”)]
则请求
不为空,并且具有参数的默认值
如何使用Route属性实现该行为 根据请求创建方法。获取类型始终接收空值
[HttpGet]
[Route("api/users")]
public IHttpActionResult Get([FromUri] ListRequest request) {
}
更改为
[HttpPost]
[Route("api/users")]
public IHttpActionResult Get([FromUri] ListRequest request) {
...
}
因为模型(类)类型参数不支持获取类型请求
希望对您有所帮助。如果您想使用路由属性初始化模型,请尝试
Route("api/users/{*pathvalue}")]
使用数据注释。欲了解更多信息,请访问
改变
public class ListRequest
{
public int Skip { get; set; } = 0;
public int Take { get; set; } = 30;
}
至
public class ListRequest
{
[DefaultValue(0)]
public int Skip { get; set; }
[DefaultValue(30)]
public int Take { get; set; }
}
它在不删除[Route(“api/users”)]的情况下工作,并且请求将不会为空。当您没有传递任何查询字符串值时,为什么会有ListRequest请求
参数?(你也可以在方法中初始化一个新实例)@StephenMuecke当我想使用默认参数值时,我没有传递任何参数。在我添加属性之前,一切正常,但我需要使用该属性。您可以尝试使用[HttpPost]方法将请求中的模型作为参数传递。@DalvinderSingh不,它是GET。用于筛选的模型,有时其他模型可以有5个以上的属性进行筛选。所以我只想用过滤器。我用模型代替了许多动作参数,你们可以在这里找到类似的问题。。我不能改变它。用于筛选的模型,有时其他模型可以有5个以上的属性进行筛选。所以我只想用过滤器。我使用的是模型,而不是动作的许多参数。Get请求不支持模型类型参数。您需要根据请求基础而不是您的需求基础进行更改。为什么?您在哪里发现Get请求不支持模型类型参数。我总是用它。看看这个问题。它可以工作,但只有在没有属性的情况下,您才能看到问题下方的注释。我们已经和达尔文德辛格谈过了。所以你的回答没有帮助。对不起,这对我有用,但我想知道为什么