ko.observable() 변수에 C# 변수를 쓸 수 있습니까? 예를 들어 "data-bind ="checked : isEvent "라는 두 개의 라디오 버튼 (true 및 false)이 있습니다.이 ko.observable -"isEvent "값을 초기화해야합니다. 두 모델을 렌더링하기 전에 @ Model.isEvent를 사용하십시오. 라디오 버튼은 적절한 라디오 버튼이 선택받을MVC4 C# 및 KnockoutJS. C# 값으로 ko.observable 초기화
0
A
답변
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);
}
1
예 당신이 할 수있는
isEvent = ko.observable(@Model.isEvent);
이 다음과 같은 자바 스크립트를 생성합니다.. 또는
isEvent = ko.observable(true);
+0
은 어디에서이 정의를 넣을까요? – Kamilius
+0
자바 스크립트 코드에서 초기화해야합니다. –
전체 개체를 serialize 할 필요가 없습니다. 단 하나의 필드 만 필요합니다. 또한 이것은 뷰 (메인 레이아웃이 아님)에 있으므로 실제로는 "헤드"가 없습니다. – Kamilius
또한 실제로 "JsonConvert"클래스를 찾을 수 없습니다 ... – Kamilius
모델이 항상 유형이 아니기 때문에 마스터 레이아웃에서이 문제를 선언하는 데 약간의 문제가 있습니다. 즉 isEvent 필드가 있습니다. – Kamilius