我想通过多个参数传递给一个httpget web api函数。我遇到的关键问题是空查询字符串参数正在转换为空。web api空查询字符串参数
我可以通过创建类似下面的东西一类解决这个问题:
public class CuttingParams
{
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string batch_number { get; set; }
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string filter { get; set; }
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string initiation_month { get; set; }
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string initiation_year { get; set; }
}
但我绝对受诅咒讨厌不必创建一个类为一次使用过的想法。
我已经做了大量的研究,并且非常努力地找到一种方法来改变上面以外的默认行为。我真的只是想做到这一点:
[HttpGet]
public object Search(string batch_number, string filter, string initiation_month, string initiation_year)
{
}
我失去了一个容易的方式来改变这种默认行为,或者我应该寻找到我的教学贯彻自己的查询字符串解析器,我可以在全局范围?
感谢
更新
似乎有关于我的文章有些混乱,对不起,如果我不清楚。我会尽力澄清。
我想只传递简单的基本类型到我的HttpGet方法,如第二个代码片段所示。我遇到的问题是空字符串参数将被转换为空。
ie. this url: http://localhost/api/cutting/search?batch_number=&filter=&intiation_month=Jan&initiation_year=2016
会产生以下值在API:
batch_number = null
filter = null
initiation_month = Jan
initiation_year = 2016
如果我改变了搜索功能,使用类的第一个代码段,它会工作,我想,但我真的努力避免长期使用类参数。
我想了解您预期的结果。在你的例子中,是否你想要的是参数没有被绑定,它们被设置为空字符串而不是'null'? – Nkosi
你尝试过'DefaultValueAttribute'吗?例如:'[DefaultValue(“”)] public string initiation_year {get;组; }' –
@Nkosi我后来的是,参数设置为精确的,我传入,即。如果我传入一个空字符串,我希望它是一个空字符串,此刻,如果我传入一个空字符串,参数值将为空 – crazyhor77