2010-11-09 64 views
23

刚刚开始玩knockout.Js这是一个非常棒的框架Steve的确很擅长。有一件事情我现在无法做到,那就是我的Html Helpers。因此,对于〔实施例我有:Knockout.js和MVC

<%: Html.TextBoxFor(model => model.Division) %> 

但我行使用数据绑定之上,但在一分钟我不能得到的“数据绑定”属性到帮助。我以前这样用过的属性@class,身份证等,但这个是一个棘手因 - 任何想法..我用尽:

<%: Html.TextBoxFor(model => model.SupplierName, new { data-bind = "SupplierName"}) %> 

<%: Html.TextBoxFor(model => model.SupplierName, new { "data-bind"" = "SupplierName"}) %> 

,但没有喜悦。我们大量使用的编辑器和文本框佣工和我真的希望这些融入项目与淘汰..

任何帮助非常appretiated

+0

这已被证明是一个有点长篇大论所以我想HtmlHelpers,是否有任何可用的或可这是我的第一个值得尝试我自己的操作系统项目? – 2010-11-10 16:12:28

回答

32

这应该工作:

<%: Html.TextBoxFor(model => model.SupplierName, new { data_bind = "SupplierName"}) %> 

变量名不能包含一个连字符( - ),但如果你在一个HTML属性使用下划线(_),当其“渲染”时它会自动转换为连字符。

+0

哇谢谢从来不知道:) +1为一个有用的提示:) – 2012-01-05 08:36:04

+0

作为参考,我认为这是MVC3只... – Tim 2012-01-09 14:21:41

+5

表达式应该是新的{data_bind =“value:SupplierName”} – Quango 2012-07-20 12:27:57

16

您可以提供的属性无论是作为匿名对象或作为字典。在这种特殊情况下的字典应使用:

<%: Html.TextBoxFor(m => m.SupplierName, new Dictionary<string, object> { { "data-bind", "SupplierName" } }) %> 
+0

干杯罗伯特,我刚刚那样做。一个必须是“供应商名称”需要“价值:供应商名称”..谢谢;) – 2010-11-09 11:02:24

+0

那么。属性值可以是任何东西......甚至是'value:SupplierName'。 ;)干杯。 – 2010-11-09 11:07:34

+0

agrred它的价值:PropertyName,我错过了只有属性似乎没有工作?还需要添加valueUpdate属性,或者由于某种原因它似乎没有更新我的基础值。 – 2010-11-10 16:10:57

3

我用Jim的答案作为我的MVC 4解决方案的基础。

吉姆:

<%: Html.TextBoxFor(model => model.SupplierName, new { data_bind = "SupplierName"}) %> 

矿:

@Html.TextBoxFor(model => model.SupplierName, new { data_bind = "value: SupplierName" })