我有一个带有许多可选值的查询字符串,例如
/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)
以此类推...
但是使用此方法,如果未设置特定的查询字符串值,则必须传递默认值,但是我不想传递默认值,我希望从过滤器中设置默认值方法。
有没有办法做到这一点?还是有更好的方法来实现同一目标?
答案 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);
}