c# - FromUri 似乎无法使用 Web API

标签 c# asp.net .net asp.net-web-api

我正在尝试实现一个搜索过滤器以在我的一个 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 类中,它缺少每个属性的 getset

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/

相关文章:

c# - Google+ 'share' 未检测到语言设置

javascript - 如何编码值以放入 iframe src 属性以防止 ASP.NET MVC 中的 XSS

c# - 单步执行我的程序时,无缘无故地调用 ToString() 方法

asp.net - 何时使用共享变量

c# - SubmitChanges 在内部将所有字段添加为 where 子句,如何摆脱它

.net - 从按钮外部触发按钮的单击事件

c# - 是否可以从 C# 重定向 stdio sprintf_s?

.net - 休眠多对多删除

c# - WPF 框架 - 使用按钮加载页面的正确方法

c# - Winform 在 Designer 中的位置