Я пытаюсь передать несколько параметров на веб-функцию 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; }
}
Но я абсолютно чертов ненависть идея того, чтобы создать класс за один раз от использования.
Ive провело много исследований и действительно изо всех сил пытаюсь найти способ изменить поведение по умолчанию, отличное от предыдущего. Я просто хочу, чтобы это сделать:
[HttpGet]
public object Search(string batch_number, string filter, string initiation_month, string initiation_year)
{
}
Я пропускаю легко, как изменить это поведение по умолчанию или то, что я должен смотреть на то, чтобы impelement собственной строки запроса анализатора, который я могу применить в глобальном масштабе?
Благодаря
Update
Там, кажется, некоторая путаница в моем посте, извините, если я не был ясен. Я попытаюсь прояснить.
Я хочу передать только простые примитивные типы в свой метод HttpGet, как показано во втором фрагменте кода. Проблема в том, что пустые параметры строки будут преобразованы в нуль.
ie. this url: http://localhost/api/cutting/search?batch_number=&filter=&intiation_month=Jan&initiation_year=2016
будет производить следующие значения в апи:
batch_number = null
filter = null
initiation_month = Jan
initiation_year = 2016
Если изменить функцию поиска, чтобы использовать класс в первом фрагменте кода, он будет работать, как я хочу, но Im действительно пытается чтобы избежать использования классов для параметров api в долгосрочной перспективе.
Я пытаюсь понять, что вы ожидали результата. Это то, что вы хотите, в вашем примере, что параметр не связан, что они установлены в пустую строку, а не 'null'? – Nkosi
Вы попробовали 'DefaultValueAttribute'? Что-то вроде: '[DefaultValue (" ")] public string initiation_year {get; задавать; } ' –
@Nkosi Что мне нужно, так это то, что параметр установлен точно, что я передаю, т. Е.если я передаю пустую строку, я хочу, чтобы она была пустой строкой, на данный момент, если я передаю пустую строку, значение параметра будет равно – crazyhor77