我正在尝试实现一个搜索过滤器以在我的一个 Controller 中获取对象。 我有以下代码:
public class SearchFilter
{
public DateTime? BusinessDate;
public DateTime? BusinessDateFrom;
public DateTime? BusinessDateTo;
public bool? Status;
}
这是我的 Controller :
public SearchFilter get([FromUri] SearchFilter SearchFilter)
{
var Results = db.MyTable.Where(t => t.Published == true);
if (SearchFilter.BusinessDate != null)
{
Results = Results.Where(t => t.BusinessDate == SearchFilter.BusinessDate);
}
else
{
if (SearchFilter.BusinessDateFrom != null && SearchFilter.BusinessDateTo != null)
{
Results = Results.Where(t => t.BusinessDate >= SearchFilter.BusinessDateFrom && t.BusinessDate <= SearchFilter.BusinessDateTo);
}
}
if (SearchFilter.Status != null)
{
Results = Results.Where(t => t.Approved == SearchFilter.Status);
}
return SearchFilter;
}
我现在返回 SearchFilter 只是为了看看它是否工作,因为过滤没有工作。
原因如下:
请求:http://localhost:11513/api/MyController/?BusinessDateFrom=2015-09-10&BusinessDateTo=2015-09-12&BusinessDate=09/09/2015&Status=true
结果:
{
"BusinessDate": null,
"BusinessDateFrom": null,
"BusinessDateTo": null,
"Status": null
}
任何人都可以解释我做错了什么,因为根据这个链接,它应该非常简单:
http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api
最佳答案
我意识到问题出在哪里。
问题出在 SearchFilter 类中,它缺少每个属性的 get
和 set
。
public class SearchFilter
{
public DateTime? BusinessDate { get; set; }
public DateTime? BusinessDateFrom { get; set; }
public DateTime? BusinessDateTo { get; set; }
public bool? Status { get; set; }
}
这使它像魅力一样发挥作用。
关于c# - FromUri 似乎无法使用 Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33629728/