查询字符串到可选参数

时间:2018-07-30 21:02:44

标签: c# .net

我有一个带有许多可选值的查询字符串,例如

/filter?location=scotland&minprice=100&maxprice=500

我有一个带有许多可选参数的过滤器方法

public List<result> Filter(
    bool isVisible = false,
    string location = null,
    int? minPrice = null,
    int? maxPrice = null,
)

我想将querystring值用作filter方法的参数,但我想不出一种好方法。

我想出的最好方法是对每个参数使用?:条件

var results = Filter(
   (Request.QueryString["isvisible"] != null ? Request.QueryString["isvisible"] == "true" : false)

以此类推...

但是使用此方法,如果未设置特定的查询字符串值,则必须传递默认值,但是我不想传递默认值,我希望从过滤器中设置默认值方法。

有没有办法做到这一点?还是有更好的方法来实现同一目标?

1 个答案:

答案 0 :(得分:0)

像您这样的声音只需要映射默认值即可。

这里实际上有两个“接口”:从调用者到Filter()方法的接口以及从Filter()方法到数据源的接口。他们不必具有相同的默认值。

public List<Whatever> Filter(string criteria1 = null, string criteria2 = null)
{
    criteria1 = criteria1 ?? SYSTEM_DEFAULT_FOR_CRITERIA1;
    criteria2 = criteria2 ?? SYSTEM_DEFAULT_FOR_CRITERIA2;

    return _dataSource.GetData(criteria1, criteria2);
}