首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用ASP.NET MVC3“剃刀”视图引擎在KnockoutJS中启用数据绑定?

如何使用ASP.NET MVC3“剃刀”视图引擎在KnockoutJS中启用数据绑定?
EN

Stack Overflow用户
提问于 2011-05-04 01:57:14
回答 2查看 9.9K关注 0票数 16

我正在尝试使用ASMVC3的“剃刀”视图引擎来实现this Knockout example

第一个主题介绍了使用标准C#视图引擎的简单数据绑定。我正在使用"Razor“尝试这个示例,下面这行代码:

代码语言:javascript
复制
<script type="text/javascript"> 
    var initialData = <%= new JavaScriptSerializer().Serialize(Model) %>; 
</script>

导致initialData的变量为空。

我还尝试了这个:

代码语言:javascript
复制
@{
    string data = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model);
}

然后像这样指定initialData:

代码语言:javascript
复制
var initialData = @Html.Raw(data);

这将使用dataset填充initialData,但绑定不起作用。

我只是尝试对这个集合进行数据绑定,以便显示想法的计数,如下面的示例所示:

代码语言:javascript
复制
<p>You have asked for <span data-bind="text: gifts().length">&nbsp;</span> gift(s)</p>

为什么数据绑定在这个实例中不起作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-04 04:12:53

在MVC3中,最简单的方法是:

代码语言:javascript
复制
var initialData = @Html.Raw(Json.Encode(Model));
票数 24
EN

Stack Overflow用户

发布于 2011-09-03 10:01:05

我遇到了同样的问题,发现是我自己的愚蠢导致了这个问题(它经常是这样的)。我忘了等到DOM加载后才调用ko.applyBindings(viewModel) --所以只需使用:

代码语言:javascript
复制
$(document).ready(function () { ko.applyBindings(viewModel); });

所以整个脚本是这样的

代码语言:javascript
复制
<script type="text/javascript">
var initialData = @Html.Raw( new JavaScriptSerializer().Serialize(Model));
var viewModel = {
    gifts: ko.observableArray(initialData)
};

$(document).ready(function () { ko.applyBindings(viewModel); });
</script>

这适用于knockout-1.2.1.js和jquery-1.5.1.js

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5873636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档