Наиболее вероятная причина - привязка к свойству 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" />
.
Вы, вероятно, должны будете к base64 закодировать двоичные данные.
Но 500 ошибок являются подсказкой, чтобы посмотреть в журнале событий Windows и видеть то, что произошло на стороне сервера.
Вы используете 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);
Надеюсь, это поможет.