【发布时间】:2013-01-31 21:47:16
【问题描述】:
我正在使用 MVC + Razor,并希望尽可能留在强类型世界中。
因此希望使用 Razor 语法遍历我的视图模型,并通过数组索引将数据绑定到剔除。
这可行吗?到目前为止,我看到的所有示例都排除了使用 for-each 模板的可能性。
@Html.TextBoxFor(_ => _[i],new {@readonly = "readonly", data_bind = string.Format("value:[{0}]",i) });
其中强类型模型是一个数组,上面是从 for 循环内部迭代的。
【问题讨论】:
-
for-each 位于 collection 之上(即数组,可能为空),但每个 [nested] 数据绑定到项目属性,因此每个 "相同”文本框(对于每个项目)应绑定到相同的属性名称。否则,你失去了我。
-
@pst 是正确的。此外,您需要先使用这些属性设置您的 Knockout 视图模型,然后才能绑定到它们。
-
@Ek0nomik 似乎最新的 ko/ko.mapping 绑定到不存在的属性(它为它们创建了一个 observable),所以它只是需要存在的结构(即对象层次结构).. It Works Here (TM),我们将它用于 WS/XML 驱动的模型。文档中的 YMMV 似乎另有说明。
-
我想避免在客户端做 for-each。我只想打印整个html并绑定KO成员。这在没有 ko-foreach 的情况下可行吗?
-
当然你可以绑定到一个没有foreach的数组。 jsfiddle.net/8pVEr 如果它不起作用,那么您的绑定语法可能是错误的。但是如果没有看到您的视图和 ko 视图模型的外观,很难提供帮助......
标签: javascript asp.net-mvc razor asp.net-mvc-4 knockout.js