如何在使用ASP.NET MVC 3“Razor”视图引擎的KnockoutJS中启用数据绑定?
问题描述:
我试图使用ASP MVC 3的“Razor”视图引擎来实现this Knockout example。如何在使用ASP.NET MVC 3“Razor”视图引擎的KnockoutJS中启用数据绑定?
第一个主题涉及使用标准ASP视图引擎的简单数据绑定C#数组。我试图用“剃刀”的样本为例,该行:
<script type="text/javascript">
var initialData = <%= new JavaScriptSerializer().Serialize(Model) %>;
</script>
导致一个空的变量initialData。
我也试过这样:
@{
string data = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model);
}
然后指定initialData这样的:
var initialData = @Html.Raw(data);
这种填充initialData与数据集,但结合不起作用。
我只是想为了显示的想法计数数据绑定这一套,如示例:
<p>You have asked for <span data-bind="text: gifts().length"> </span> gift(s)</p>
为什么没有数据在这种情况下结合的工作?
答
在MVC3最简单的方法就是做:
var initialData = @Html.Raw(Json.Encode(Model));
答
我碰到了同样的问题,并发现这是我自己的愚蠢造成的问题(这经常是)。我忘了要等到DOM加载调用ko.applyBindings(viewModel)
- 单纯用:
$(document).ready(function() { ko.applyBindings(viewModel); });
所以整个脚本
<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>
这曾与淘汰赛1.2.1.js和jQuery-1.5。 1.js
+0
你刚刚帮我解决了一个问题,在过去的两天里,我一直在抨击我的头。谢谢。 – dotnetN00b 2012-07-27 20:05:53
谢谢@RP,但它对我不起作用。我有这样的:
你有要求 礼物。
绑定不会显示给我。 – retrodrone 2011-05-03 20:22:38你可以在浏览器中查看“查看源代码”,看看initialData在标记中的外观如何?我有一个与此代码一起使用的礼物编辑器示例副本。你改变了别的吗?谢谢。 – 2011-05-03 20:45:08
没什么特别的。 initialData只是一个常规的JSON数组,填充了正确的数据。我可以抛出一个正确计数的警告框,但ko数据绑定不起作用。这是非常令人沮丧的,因为现场示例非常棒。 – retrodrone 2011-05-03 20:55:54