将Knockout.js与最新的jQuery文件和ASP.NET MVC一起使用

将Knockout.js与最新的jQuery文件和ASP.NET MVC一起使用,jquery,razor,asp.net-mvc-3,jquery-templates,knockout.js,Jquery,Razor,Asp.net Mvc 3,Jquery Templates,Knockout.js,我正在尝试将Knockout.js与ASP.NETMVC3.0结合使用(标题泄露了它,不是吗?!) 我遇到了一些问题(与新的jQueryTMPL引擎比ASP.NETMVC3.0更相关) 在我的测试中,我使用了Steve Sanderson的示例程序,并且在新的Razor视图引擎中复制了他的结果(我不相信Razor与我的问题有任何关系) 然而,我想用自然的jquery绑定来做更多的工作,而不是使用HTML绑定属性。这在knockout的教程中有详细描述。 然而,我无法复制这一解释。我将在下面

我正在尝试将Knockout.js与ASP.NETMVC3.0结合使用(标题泄露了它,不是吗?!)

我遇到了一些问题(与新的jQueryTMPL引擎比ASP.NETMVC3.0更相关)

在我的测试中,我使用了Steve Sanderson的示例程序,并且在新的Razor视图引擎中复制了他的结果(我不相信Razor与我的问题有任何关系)

然而,我想用自然的jquery绑定来做更多的工作,而不是使用HTML绑定属性。这在knockout的教程中有详细描述。

然而,我无法复制这一解释。我将在下面显示我的视图代码。我的问题是因为
{{foreach(i,gift)gifts}}
不起作用。我尝试了许多变体(
{{foreach(I,gift)gifts()}}
,正如我在其他示例中看到的那样)

我使用的是最新的
knockout.js
文件。我正在使用jQuery 1.4.3。我正在使用
http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.js
用于模板引擎。但是,我也使用knockous.js网站上包含的
tmpl.js
文件尝试了这个方法,我得到了相同的结果

使用jQuery模板时,根据当前规范,模板不会呈现

jQuery模板标记文档可在以下位置找到:

以防有人对我的确切型号感到困惑。如果我用{
{foreach gift}
替换
{foreach(I,gift)gift}}
,则模型呈现和行为正确,但我无法对任何内容使用jQuery本机
${property}
声明

HTML
@model IEnumerable
@使用System.Web.Script.Serialization;
@{
View.Title=“Index”;
Layout=“~/Views/Shared/_Site.cshtml”;
}
礼品列表编辑器
添加礼物
提交
{{每个(我,礼物)礼物}
礼品名称:${Title}
价格:$
{{/每个}}
var initialData=@(新的HtmlString(Model.ToJson());
var viewModel={
礼物:ko.observableArray(初始数据),
addGift:function(){
this.gives.push({标题:,价格:});
},
移除:功能(礼物){
这个。礼物。移除(礼物);
},
保存:函数(){
ko.utils.postJson(location.href,{gifts:this.gifts});
}
};
应用绑定(视图模型);
$(“form”).validate({submitHandler:function(){viewModel.save()}});

我会以不同的方式处理这个问题。我将使用以下行:

<tbody data-bind='template: { name: "giftRowTemplate", foreach: gifts }'></tbody>

而不是:

<tbody data-bind="template:'giftRowTemplate'"></tbody>


这样你就不需要在给你带来麻烦的模板中使用
{{each(i,gift)gifts}}
行。

{{each gifts}}
而不是
{each(i,gifts)gifts}
就可以了。

谢谢,我想我刚才有一些打字错误,跟你刚才解释的不符。这很好用。
<tbody data-bind="template:'giftRowTemplate'"></tbody>