Есть ли возможность написать переменную C# в переменной ko.observable()? Например, у меня есть два переключателя (true и false) с параметром «data-bind =» checked: isEvent ». Мне нужно инициализировать это значение ko.observable -« isEvent »с помощью @ Model.isEvent прямо перед рендерингом этих двух радиокнопки, чтобы получить надлежащую радиокнопка проверилаMVC4 C# и KnockoutJS. Инициализация ko.observable с C# значением
ответ
в качестве альтернативы, вы можете сериализовать модель в одной переменные в главы вашего документа, а затем таким образом, чтобы вам не приходилось включать всю вашу модель представления в ваше представление.
Основываясь на ваших комментариях, вот более полный пример того, как это будет работать.
В вашей странице макета:
@using Newtonsoft.Json
<!-- this should already be referenced in your project, but if not use Nuget to install it -->
<!DOCTYPE html>
<head>
<title>Title</title>
<script type="text/javascript">
var model = @Html.Raw(JsonConvert.SerializeObject(Model));
//Alternatively, you can omit any serialization, and just use:
var isEvent = @Model.isEvent;
</script>
<script src="path_to_view_model.js"></script>
</head>
В вашей модели представления KO:
function ViewModel() {
var self = this;
self.isEvent = ko.observable(model.isEvent);
}
Да, вы можете
isEvent = ko.observable(@Model.isEvent);
Это сгенерирует следующий JavaScript:..
isEvent = ko.observable(true);
Где я поставлю это определение? – Kamilius
В любом Javascript-коде, который у вас есть, чтобы его инициализировать. –
Мне не нужно сериализовать весь объект, мне нужно только одно поле. Также это находится в представлении View (not Main), поэтому у меня нет «головы». – Kamilius
Кроме того, я не могу на самом деле найти класс «JsonConvert» ... – Kamilius
У меня есть небольшая проблема с объявлением этого в макете макета, потому что модель не всегда имеет тип, у которого есть поле isEvent. – Kamilius