【发布时间】:2012-08-07 08:16:59
【问题描述】:
我正在尝试利用 KnockoutJS 和 MVC 4 在表格的第一列中显示带有 ActionLink 定义的表格。显示数据本身非常简单,我没有任何问题。我遇到的问题是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 调用来检索数据,但上面的代码也演示了该问题)。
无论我用什么替换 ???,我都无法将 TableId 字段的值插入到 href 中。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
标签: asp.net-mvc data-binding knockout.js asp.net-mvc-4 html.actionlink