MVC4 C#和KnockoutJS。使用C#值初始化ko.observable

时间:2013-06-18 13:33:06

标签: c# asp.net-mvc-4 knockout-mvc

是否有可能将C#变量写入ko.observable()变量? 例如,我有两个单选按钮(true和false),其中“data-bind =”checked:isEvent“。我需要在渲染这两个radiobuttons之前使用@ Model.isEvent初始化这个ko.observable - ”isEvent“值,检查适当的radiobutton。

2 个答案:

答案 0 :(得分: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 :(得分:1)

是的,你可以。

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

这将生成以下javascript:

isEvent = ko.observable(true);