使用Route属性时模型为null

时间:2017-07-21 10:23:30

标签: c# asp.net-mvc asp.net-web-api routing

在我的var cultureValueId = 2; var data = LoadData(); var description = data .Where(_ => _.CultureValueId == cultureValueId && _.SystemKey == "lblEmpNumber").ToList() .Select(q => q.TestBCollection .Where(_ => (_.CultureValueId == q.CultureValueId && !string.IsNullOrEmpty(_.Description))) .Select(b => b.Description.TrimEnd(':')).FirstOrDefault()).SingleOrDefault(); if (string.IsNullOrEmpty(description)) { description = data .Where(_ => _.CultureValueId == cultureValueId && _.SystemKey == "lblEmpNumber").ToList() .Select(q => q.TestBCollection .Where(_ => _.CultureValueId == q.CultureValueId && !string.IsNullOrEmpty(_.Description)) .Select(b => b.Description.TrimEnd(':')) .DefaultIfEmpty(q.Description.TrimEnd(':')) .FirstOrDefault()).SingleOrDefault(); } 我有模特

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为空。如果我删除request,则[Route("api/users")]不为空且具有参数的默认值。

如何使用Route属性达到该行为?

3 个答案:

答案 0 :(得分:1)

如果您想使用Route属性初始化模型,请尝试

Route("api/users/{*pathvalue}"")]

答案 1 :(得分:0)

发布请求的基础上创建您的方法。获取类型始终接收空值。

[HttpGet]
[Route("api/users")]
public IHttpActionResult Get([FromUri] ListRequest request) {

}

更改为

[HttpPost]
[Route("api/users")]
public IHttpActionResult Get([FromUri] ListRequest request) {
...
}

因为Model(Class)类型参数不支持get type request。

希望它能提供帮助

答案 2 :(得分:0)

使用数据注释。有关更多信息,请访问Default value in mvc model using data annotation

更改

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”)]的情况下运行,并且请求不会为空。