【发布时间】:2013-10-16 08:00:00
【问题描述】:
我正在寻找一种正确的方法来处理查询字符串中的空参数。 Web Api 不接受查询字符串为“?id=1&category=”,这似乎是合理的,但我需要处理这种情况。
快速而肮脏的解决方案是使用将在服务器端解释的自定义值(例如“(空)”),但我对此不满意......
有什么建议吗?
谢谢。
【问题讨论】:
标签: asp.net-mvc query-string asp.net-web-api
我正在寻找一种正确的方法来处理查询字符串中的空参数。 Web Api 不接受查询字符串为“?id=1&category=”,这似乎是合理的,但我需要处理这种情况。
快速而肮脏的解决方案是使用将在服务器端解释的自定义值(例如“(空)”),但我对此不满意......
有什么建议吗?
谢谢。
【问题讨论】:
标签: asp.net-mvc query-string asp.net-web-api
我过去处理过的一种方法是创建一个类来保存您的参数,然后使用 ModelBinder 属性将您的查询参数绑定到类属性。
所以你的班级看起来像这样:
public class QueryParams
{
public string Category {get; set;}
public int Id {get; set;}
}
您的 api 控制器中的方法如下所示:
public objectToReturn Get([ModelBinder] QueryParams)
{
//code here
}
这样,如果查询字符串中的参数之一没有值,它将被简单地忽略。
【讨论】:
string.empty 分配给 Category 属性。
你可以使用这个属性来实现你想要的。
[DisplayFormat(ConvertEmptyStringToNull = false)]
如果“类别”缺失,那么它将为空。 否则,如果 "category=" 或 "category=" 则为空字符串或空格。
【讨论】: