Как использовать HttpWebRequest для вызова Операции веб-сервиса, которая берет в байте [] параметр?

Наиболее вероятная причина - привязка к свойству AllowOrder с помощью помощника HiddenFor перед использованием <input type="checkbox" />, который будет генерировать входные элементы в следующем порядке:

<input name="AllowOrder" type="hidden" ... />

<input type="checkbox" id="allowOrder" name="AllowOrder" value="true" ... />

, поскольку существует 2 Для входных элементов с таким же значением атрибута name только первый элемент <input> будет привязан к свойству viewmodel, которое содержит значение true в вашем случае. Вместо того, чтобы создавать флажок вручную с тегом <input> и скрытым полем отдельно, вы должны использовать вспомогательный атрибут @Html.CheckBoxFor() и переключить атрибут checked с помощью вспомогательной функции ниже или использовать троичный оператор:

public object SetChecked(bool value)
{
    if (value)
    {
        return new { id = "allowOrder", @checked = "checked" };
    }
    else
    {
        return new { id = "allowOrder" };
    }
}

Флажок

@* alternative 1 *@

@Html.CheckBoxFor(model => model.AllowOrder, @(SetChecked(Model.AllowOrder)))

@* alternative 2 *@

@Html.CheckBoxFor(model => model.AllowOrder, new { id = "allowOrder", @checked = @(Model.AllowOrder ? "checked" : "") })

Примечание: checked - это ключевое слово C #, поэтому его необходимо экранировать с помощью @, чтобы установить его как атрибут HTML визуализации <input type="checkbox" /> .

5
задан John Saunders 16 January 2013 в 19:28
поделиться

2 ответа

Вы, вероятно, должны будете к base64 закодировать двоичные данные.

Но 500 ошибок являются подсказкой, чтобы посмотреть в журнале событий Windows и видеть то, что произошло на стороне сервера.

0
ответ дан 14 December 2019 в 04:48
поделиться

Вы используете POST/HTTP HTTP, ПОЛУЧАЮТ возможность инфраструктуры веб-сервиса ASP.NET вместо того, чтобы отправить фактический вызов веб-сервиса. Это - механизм, который позволяет Вам тестировать простые веб-сервисы, но он действительно не разработан для использования в производственном приложении. На самом деле, если Вы перейдете к URL веб-сервиса, то Вы найдете, что он не может даже отобразить тестовую входную форму для того типа параметра. Могло бы быть возможно выяснить способ обмануть его в работу, но честно говоря, необходимо просто использовать его способ, которым это предназначается, и генерируйте прокси веб-сервиса.

В рамках щелчка правой кнопкой мыши Visual Studio по проекту, содержащему клиентский код и выбор, Добавляют веб-Ссылка или Сервис. Затем введите в URL к веб-сервису, и он генерирует прокси. При использовании WCF, он будет выглядеть примерно так:

// ServiceNameClient is just a sample name, the actual name of your client will vary.
string data = "abc";
byte[] dataAsBytes = Encoding.UTF8.GetBytes(data);
ServiceNameClient client = new ServiceNameClient();
client.UploadFile(dataAsBytes);

Надеюсь, это поможет.

3
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: