ActionLink
テーブルの最初の列に定義を含むテーブルを表示するために、KnockoutJS と MVC 4 を利用しようとしています。データ自体の表示は非常に簡単で、問題はありません。私が抱えている問題は、の生成にありActionLink
ます。
Use MVC helpers inside jquery.tmpl templates を見てきましたが、そこのソリューションはノックアウト テンプレートを利用しておらず、Url をモデル オブジェクトに挿入することはできません (ビュー モデルの作成に使用されるアプリ ドメイン モデル オブジェクトが使用されます)。アプリケーション全体に広く適用されます)。
テーブル定義:
<table>
<tbody data-bind="template: { name: 'dmuTableDetail', foreach: tables() }"></tbody>
</table>
(tables
は観測可能な配列であるため、括弧です)。
ノックアウト テンプレートの定義:
<script id="dmuTableDetail" type="text/html">
<tr>
<td>@Html.ActionLink("Details", "Details", "DMUTableCategory", new { @Id = ??? } )</td>
<td data-bind="text:TableId"></td>
<td data-bind="text:TableName"></td>
</tr>
</script>
ビュー モデルの定義:
var PageViewModel = function () {
self = this;
self.tables = ko.observableArray([]);
self.readItems = function () {
self.tables(jQuery.parseJSON('[{"TableId":1001, "TableName":"Table#1"},{"TableId":1002, "TableName":"Table#2"}]'));
}
}
$(document).ready(function () {
vm = new PageViewModel();
self.readItems('');
ko.applyBindings(vm);
});
(実際のコードはデータを取得するために Ajax 呼び出しを実行しますが、上記のコードも問題を示しています)。
を何に置き換えても、href に挿入するフィールド???
の値を取得できません。TableId
どんな助けでも大歓迎です。
ありがとうございました。