我有一个带有许多可选值的查询字符串,例如。/filter?location=scotland&minprice=100&maxprice=500我有一个带有许多可选参数的过滤器方法public List<result> Filter( bool isVisible = false, string location = null, int? minPrice = null, int? maxPrice = null,)我想使用查询字符串值作为过滤器方法的参数,但我想不出一个好的方法来做到这一点。我能想出的最好方法是使用 ?: 每个参数的条件var results = Filter( (Request.QueryString["isvisible"] != null ? Request.QueryString["isvisible"] == "true" : false)等等...但是使用此方法,如果尚未设置特定的查询字符串值,则必须传入默认值,但我不想传入默认值,我希望从过滤器方法中设置默认值。有没有办法做到这一点?或者有没有更好的方法来实现同样的目标?
1 回答
GCT1015
TA贡献1827条经验 获得超4个赞
听起来你只需要映射默认值。
这里实际上有两个“接口”:调用者到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);
}
- 1 回答
- 0 关注
- 161 浏览
添加回答
举报
0/150
提交
取消