将代码与ASP.NET标记代码块中的数据绑定项的信息组合在一起

时间:2013-04-26 13:08:13

标签: asp.net knockout.js markup

伙计,我从未真正学过所有嵌入式代码块以及可以在ASP.NET中使用的东西。我要做的是以下内容:

  • 我有一个转发器
  • 它呈现一个表
  • 在每一行中,我需要添加一个data-bind属性(是的,对于Knockout),其中包含一些文本和rowindex。

更具体地说,我想呈现:

<table>
    <tr data-bind="with:myItems()[0]">
        ...
    </tr>
    <tr data-bind="with:myItems()[1]">
        ...
    </tr>
    <tr data-bind="with:myItems()[2]">
        ...
    </tr>
</table>

我试过了:

data-bind="<%# String.Format("myItems()[{0}]", Container.ItemIndex) %>"

但是这不起作用(data-bind="<%# Container.ItemIndex %>会这样。所以我正在尝试将代码与数据绑定项中的信息结合起来。

我知道Knockout中有一个foreach绑定,但我不能使用它,因为:

  • 我希望/需要我的HTML最初是在服务器端构建的
  • 还有其他特定的javascript需要HTML才能存在,所以我不能让Knockout填充表格
  • 我正在使用ASP.NET Repeater,它与Knockout的模板不能很好地混合。

我也知道,我可以在代码隐藏(使用<tr runat="server" ... >)中执行此操作,但我正在尝试将所有布局和javascript放在标记和js文件中,而不是放在C#代码中。

那么,我能以某种方式在我的标记中添加代码以将我选择的文本与当前数据绑定项的信息结合起来吗?

1 个答案:

答案 0 :(得分:1)

显然,糟糕的是,答案很简单,由于我犯了另一个错误,它第一次无效:

<tr data-bind="with: myItems()[<%# Container.ItemIndex %>]">

我在my Blog上提供了更多信息,并在GitHub上提供了一个工作示例。