0

この質問では、回答はパラメータとしてオブジェクトを使用することを提案しています。これにアクセスするにはどのURLを使用しますか?OPの最初の例では、私の元のアプローチはアクションをオーバーロードすることでした(オーバーロードが正しい単語かどうかはわかりません)ので、次のようになりました。

public IEnumerable<NTOrder> Get()...

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

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

エレガントではありませんが、1つのオブジェクトに変更すると、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はまったく同じように機能し、オブジェクトのプロパティごとに1つのクエリ文字列パラメーターがあります。

于 2012-06-08T18:41:21.183 に答える