查询字符串到可选参数

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


/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)

等等...


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


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


明月笑刀无情
浏览 162回答 1
1回答

GCT1015

听起来你只需要映射默认值。这里实际上有两个“接口”:调用者到Filter()方法的接口和Filter()方法到数据源的接口。它们不必具有相同的默认值。public List<Whatever> Filter(string criteria1 = null, string criteria2 = null){&nbsp; &nbsp; criteria1 = criteria1 ?? SYSTEM_DEFAULT_FOR_CRITERIA1;&nbsp; &nbsp; criteria2 = criteria2 ?? SYSTEM_DEFAULT_FOR_CRITERIA2;&nbsp; &nbsp; return _dataSource.GetData(criteria1, criteria2);}
打开App,查看更多内容
随时随地看视频慕课网APP