在this question中,答案建议使用对象作为参数。我将使用什么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;
}发布于 2012-06-11 22:32:15
我发现this answer是一种可能的解决方案,它基本上建议将数据作为JSON传递到url中,并添加一个过滤器将其转换为复杂的对象,但正如那篇文章中的操作所暗示的那样,它不是最优雅的way...anybody有更优雅的解决方案吗?
发布于 2012-06-09 02:41:21
URL的工作方式完全相同,对象中的每个属性都有一个querystring参数。
https://stackoverflow.com/questions/10954345
复制相似问题