使用FromQuery时是否可以将类对象默认为null

时间:2019-05-21 10:41:55

标签: c# asp.net-core .net-core

public class Filter
{
    public string Property1 { get;set; }
    public string Property2 { get;set; }
}
[HttpGet("/search")]
public IActionResult Search([FromQuery] Filter filter)
{
    ...
}

我想知道如果我打电话给filter,是否可以将/search的值默认为null。

现在filter不会为空,但其每个属性都将为空。这可能是因为模型绑定正在创建该类的默认实例,以用查询字符串中找到的属性填充该类。

我正在使用dotnet core 2.2

1 个答案:

答案 0 :(得分:2)

据我所知这是不可能的,因为模型绑定将创建一个Filter类的默认空实例,并尝试从查询字符串参数填充其属性。您可以使用模型验证(例如[Required]属性)来确保正确填充Filter对象。另一种更手动的方法可能是创建一个IsEmpty()方法并检查每个属性中是否都有值,然后使用该方法确定Filter对象是否实际包含数据。