1

伙计,我从来没有真正学习过所有可以在 ASP.NET 中使用的嵌入式代码块和东西。我想要做的是以下几点:

  • 我有中继器
  • 它呈现一个表格
  • 在每一行中,我需要添加一个data-bind包含一些文本和行索引的属性(是的,用于 Knockout)。

更具体地说,我想渲染:

<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 中继器,它与 Knockout 的模板不能很好地混合。

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

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

4

1 回答 1

1

很糟糕,显然,答案很简单,因为我犯了另一个错误,第一次没有奏效:

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

我在我的博客上放了更多信息,在GitHub上放了一个工作示例。

于 2013-04-26T13:13:03.750 回答