2014-09-29 4 views
0

У меня есть следующий метод в моем веб-службыПринимая нулевые значения в службы вызова веб

<WebMethod(Description:="GetMerchants")> _ 
    Public Function GetMerchants(ByVal separator As String, ByVal DateFrom As String, ByVal DateTo As String, ByVal ID As String, ByVal MerchantID As String, ByVal RimNo As String, _ 
            ByVal Name As String, ByVal Description As String, ByVal Category As String, 
            ByVal Region As String, ByVal isHidden As Boolean) 

Я хочу, чтобы отправить пустое значение IsHidden, но это дает мне следующую ошибку

системы. ArgumentException: невозможно преобразовать в System.Boolean. Имя параметра: type ---> System.FormatException: Строка не была признана допустимой логической. в System.Boolean.Parse (строковое значение) на System.String.System.IConvertible.ToBoolean (провайдер IFormatProvider) в System.Convert.ChangeType (значение объекта, тип conversionType, поставщик IFormatProvider) в System.Web.Services .Protocols.ScalarFormatter.FromString (String value, Type type) --- Конец внутренней стеки стека исключений --- в System.Web.Services.Protocols.ScalarFormatter.FromString (String value, Type type) at System. Web.Services.Protocols.ValueCollectionParameterReader.Read (коллекция NameValueCollection) в System.Web.Services.Protocols.HtmlFormParameterReader.Read (HttpRequest запросу) в System.Web.Services.Protocols.HttpServerProtocol.ReadParameters() в System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

Как установить значение по умолчанию ishidden в false. Кстати, он даже не вводит метод. Ошибка отображается, когда я нажимаю invoke и, поставив точку останова, понял, что она даже не вводит метод.

Я искал в Интернете, я не смог найти способ установить значение по умолчанию для необязательного поля. Есть ли способ сделать это?

+0

Каких ценностей вы подаете в то? Как выглядит ваш запрос? – kkuilla

+0

Вы также должны пометить свой вопрос на соответствующем языке, чтобы получить соответствующую помощь. – kkuilla

+0

SELECT * from my_table where (isHidden like '0'), он отлично работает, когда я ставил ishidden как строку, но я хочу, чтобы это было логическим, чтобы проверить, могу ли я установить значение по умолчанию для необязательных параметров. –

ответ

0

Поскольку «bool» не имеет значения NULL, вам нужно будет изменить его на нулевой тип.

В C# я бы написал «bool? IsHidden» вместо «bool», в противном случае (что было бы одинаково) «Nullable isHidden».

Таким образом, измените код на «As Boolean?». (вопросительный знак в конце). Тогда он должен принять значение null. =)

Тип с нулевым значением имеет два свойства: «HasValue» и «Value».

Вы можете прочитать о обнуляемых типах на: http://msdn.microsoft.com/en-us/library/ms235245.aspx

+0

Я попробовал, я получил следующее сообщение: «Тестовая форма доступна только для методов с примитивными типами в качестве параметров». –

+0

@Fares Джозеф Эйд - http://stackoverflow.com/questions/8037505/asmx-webservice-test-form-only-available-on-local-machine-for-one-webmethod-onl – Sasse