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 を最初にサーバー側で構築したい/必要とする
  • HTMLがすでに存在している必要がある他の特定のjavascriptがあるため、Knockoutにテーブルを入力させることはできません
  • ASP.NET Repeater を使用していますが、これは Knockout のテンプレートとうまく組み合わせられません。

また、コード ビハインド ( with <tr runat="server" ... >) でこれを行うこともできますが、すべてのレイアウトと JavaScript を C# コードではなく、マークアップと js ファイルに入れようとしています。

では、何らかの方法でマークアップにコードを追加して、選択したテキストと現在のデータバインドされたアイテムからの情報を結合することはできますか?

4

1 に答える 1

1

残念なことに、明らかに、答えは非常に単純であり、私が犯した別の間違いのために、最初はうまくいきませんでした:

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

ブログに詳細情報を掲載し、 GitHubに実例を掲載しています。

于 2013-04-26T13:13:03.750 に答える