Web Api:在查询字符串中传递空参数

3
我正在寻找一种处理查询字符串中空参数的适当方法。Web Api不接受"?id=1&category="这样的查询字符串,这似乎是合理的,但我需要处理这种情况。
快速且简单的解决方案是使用自定义值,在服务器端进行解释(例如使用"(empty)"),但我对此并不满意...
有什么建议吗?
谢谢。
2个回答

3

过去我处理这个问题的方法是创建一个类来保存您的参数,然后使用ModelBinder属性来将查询参数绑定到类属性上。

因此,您的类应该长这样:

public class QueryParams
{
    public string Category {get; set;}
    public int Id {get; set;}
}

您的API控制器中的方法应该如下所示:

public objectToReturn Get([ModelBinder] QueryParams)
{
    //code here
}

如果查询字符串中的参数没有值,它将被简单地忽略。


谢谢,这个解决方案可行。然而,这意味着我在控制器中将空值解释为一个空字符串。我希望"category="被解释为空字符串,而在我的查询字符串中没有这个参数则为null。 - jpo
解决这个问题的方法是在QueryParams类中添加一个构造函数,然后使用它将string.empty赋值给Category属性。 - James
这是我在资源规划应用程序中处理类似情况的方式,其中我有一个自定义的DateTime,它可以是直接的日期时间,也可以是一组关键字,例如"On Hold"或空白。 - jfrankcarr

1
你可以使用这个属性来实现你想要的效果。
    [DisplayFormat(ConvertEmptyStringToNull = false)]

如果缺少“category”,它将为null。 否则,如果“category =”或“category = ”,那么将是一个空字符串或空格。

太棒了——这正是我一直在寻找的。 - Dr. Hilarius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接