Как только вы выясните, что начальное совпадение для переключателя хочет совпадать только со строкой и хочет установить значение в строку, остается просто преобразовать ваше начальное значение в строку. Мне пришлось бороться с этим с помощью значений Int.
После того, как вы настроили свои наблюдаемые, преобразуйте значение в строку, и KO сделает свое волшебство оттуда. Если вы отображаете отдельные строки, выполняйте преобразование в этих строках.
В примере кода я использую Json для сопоставления всей модели с помощью одной команды. Затем разрешите Razor вставить значение между кавычками для преобразования.
script type="text/javascript">
KoSetup.ViewModel = ko.mapping.fromJS(@Html.Raw(Json.Encode(Model)));
KoSetup.ViewModel.ManifestEntered("@Model.ManifestEntered");
KoSetup.ViewModel.OrderStatusID("@Model.OrderStatusID");
</script>
Я использую «Выгрузить все на экран» внизу моей веб-страницы во время разработки.
<h4>Debug</h4>
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
Вот значения данных, до
"OrderStatusID": 6,
"ManifestEntered": true,
и, после
"OrderStatusID": "6",
"ManifestEntered": "True",
В моем проекте мне не нужно было конвертировать Bools, потому что я могу использовать флажок, который не вызывает такого разочарования.