0

这个问题中,答案建议使用对象作为参数。我将使用什么 URL 来访问它?在 OP 的第一个示例中,我最初的方法是重载动作(不确定重载是否是正确的词)所以我有:

public IEnumerable<NTOrder> Get()...

public IEnumerable<NTOrder> Get(int p)...

public IEnumerable<NTOrder> Get(int p, int q)

不优雅,我知道,但如果我将其更改为一个对象,我不知道如何格式化 URL...

旧代码

public IEnumerable<NTOrder> Get() {
    //build NTOrderList
    return NTOrderList;
}

新代码

public class FilterView
{
    public int? fID { get; set; }
    public int? fCustomer { get; set; }
    public string fSalesPerson{ get; set; }
}

public IEnumerable<NTOrder> Get(FilterView queryFilter) {
    //build NTOrderList
    List<NTOrder> result = (from order in NTOrderList
                               where (order.OrderID == queryFilter.fID || queryFilter.fID == null)
                                  && (order.CustomerID == queryFilter.fCustomer || queryFilter.fCustomer == null)
                                  && (queryFilter.fSalesPerson == null || order.Salesperson.Equals(queryFilter.fSalesPerson))
                                select order).ToList();

    return result;
}
4

2 回答 2

1

我发现这个答案是一个可能的解决方案,它基本上建议在 url 中将数据作为 JSON 传递并添加一个过滤器以将其转换为一个复杂的对象,但正如该帖子中的 OP 所暗示的那样,这不是最优雅的方式......任何人有更优雅的解决方案吗?

于 2012-06-11T14:32:14.707 回答
0

URL 将以完全相同的方式工作,对象中的每个属性都有一个查询字符串参数。

于 2012-06-08T18:41:21.183 回答