2013-06-18 34 views
0

是否有可能將一個C#變量寫入ko.observable()變量? 例如,我有兩個單選按鈕(true和false)與「數據綁定=」選中:isEvent「。我需要初始化這個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

我不需要序列化整個對象,我只需要一個字段。這也是在視圖(而不是主佈局),所以我真的沒有一個「頭」在那裏。 – Kamilius

+0

此外,我不能真正找到「JsonConvert」類... – Kamilius

+0

我有一個輕微的問題在主佈局中聲明這一點,因爲模型並不總是類型,它有isEvent字段。 – Kamilius

1

是的,你可以

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

,這將產生以下的javascript:。

isEvent = ko.observable(true); 
+0

哪兒我把這個定義是什麼? – Kamilius

+0

在任何Javascript代碼中,您都需要初始化它。 –