2013-06-18 2 views
0

Есть ли возможность написать переменную C# в переменной ko.observable()? Например, у меня есть два переключателя (true и false) с параметром «data-bind =» checked: isEvent ». Мне нужно инициализировать это значение ko.observable -« isEvent »с помощью @ Model.isEvent прямо перед рендерингом этих двух радиокнопки, чтобы получить надлежащую радиокнопка проверилаMVC4 C# и KnockoutJS. Инициализация ko.observable с C# значением

ответ

2

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

Основываясь на ваших комментариях, вот более полный пример того, как это будет работать.

В вашей странице макета:

@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); 
} 
+0

Мне не нужно сериализовать весь объект, мне нужно только одно поле. Также это находится в представлении View (not Main), поэтому у меня нет «головы». – Kamilius

+0

Кроме того, я не могу на самом деле найти класс «JsonConvert» ... – Kamilius

+0

У меня есть небольшая проблема с объявлением этого в макете макета, потому что модель не всегда имеет тип, у которого есть поле isEvent. – Kamilius

1

Да, вы можете

isEvent = ko.observable(@Model.isEvent); 

Это сгенерирует следующий JavaScript:..

isEvent = ko.observable(true); 
+0

Где я поставлю это определение? – Kamilius

+0

В любом Javascript-коде, который у вас есть, чтобы его инициализировать. –

Смежные вопросы