2013-06-18 3 views
0

ko.observable() 변수에 C# 변수를 쓸 수 있습니까? 예를 들어 "data-bind ="checked : isEvent "라는 두 개의 라디오 버튼 (true 및 false)이 있습니다.이 ko.observable -"isEvent "값을 초기화해야합니다. 두 모델을 렌더링하기 전에 @ Model.isEvent를 사용하십시오. 라디오 버튼은 적절한 라디오 버튼이 선택받을MVC4 C# 및 KnockoutJS. C# 값으로 ko.observable 초기화

답변

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

전체 개체를 serialize 할 필요가 없습니다. 단 하나의 필드 만 필요합니다. 또한 이것은 뷰 (메인 레이아웃이 아님)에 있으므로 실제로는 "헤드"가 없습니다. – Kamilius

+0

또한 실제로 "JsonConvert"클래스를 찾을 수 없습니다 ... – Kamilius

+0

모델이 항상 유형이 아니기 때문에 마스터 레이아웃에서이 문제를 선언하는 데 약간의 문제가 있습니다. 즉 isEvent 필드가 있습니다. – Kamilius

1

예 당신이 할 수있는

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

이 다음과 같은 자바 스크립트를 생성합니다.. 또는

isEvent = ko.observable(true); 
+0

은 어디에서이 정의를 넣을까요? – Kamilius

+0

자바 스크립트 코드에서 초기화해야합니다. –