【发布时间】:2015-05-01 17:53:58
【问题描述】:
我在 C# 的 MVC4 项目中有一个单页应用程序。
在我的 HTML 中,我有一个类似表格的列表 - 第一个是表格标题,第二个是具有“foreach”属性(敲除)的 div,并显示了我列表中的所有项目。
现在,我需要这个“表格”是动态的 - 我将获得一个列列表和“指令”(列标题、列类名称、列值名称、css 条件等),HTML 将是动态构建。 淘汰赛可以吗?
这是我现在的代码。只有 5 列。我需要它是动态的,这样我就可以通过更改指令列表轻松添加(和删除)列,而无需触及 HTML。
<ul class="assetsTitles">
<li class="ItemKey" data-bind="click: sortBy.bind($data, 'Key'), css: { selected: Filter().OrderBy() == 'Key', desc: Filter().Descending() }"><span>Key</span></li>
<li class="ItemName" data-bind="click: sortBy.bind($data, 'Name'), css: { selected: Filter().OrderBy() == 'Name', desc: Filter().Descending() }"><span>Item Name</span></li>
<li class="ItemProp1" data-bind="click: sortBy.bind($data, 'ItemProp1'), css: { selected: Filter().OrderBy() == 'ItemProp1', desc: Filter().Descending() }">ItemProp1</li>
<li class="ItemProp2" data-bind="click: sortBy.bind($data, 'ItemProp2'), css: { selected: Filter().OrderBy() == 'ItemProp2', desc: Filter().Descending() }">ItemProp2</li>
<li class="ItemProp3" data-bind="click: sortBy.bind($data, 'ItemProp3'), css: { selected: Filter().OrderBy() == 'ItemProp3', desc: Filter().Descending() }">ItemProp3</li>
</ul>
<div data-bind="foreach: items, visible: items().length > 0">
<div class="itemRow" data-bind=" attr: { id: RowId() }">
<ul class="itemRowDetails " data-bind="visible: ShowDetails, selected: IsSelected, click: $parent.showItemDetails.bind($data, $data, $parent.type), css: { selected: IsSelected() }">
<li class="ItemKey" data-bind=" title: Key"><span data-bind="text: Key" /></li>
<li class="ItemName" data-bind=" title: Name"><span data-bind="text: Name" /></li>
<li class="ItemProp1" data-bind=" title: ItemProp1"><span data-bind="text: ItemProp1" /></li>
<li class="ItemProp2" data-bind=" title: ItemProp2"><span data-bind="text: ItemProp2" /></li>
<li class="ItemProp3" data-bind=" title: ItemProp3Display"><span data-bind="text: ItemProp3Display, css: { alertDetail: ItemProp3Alert, alertDetail2: ItemProp3Alert2 }" /></li>
</ul>
</div>
</div>
【问题讨论】:
-
是的。有可能的。当前代码有什么问题?
-
它不是动态的。它是硬编码的。我需要获取列和属性列表。
-
如果我想添加一列 - 我需要更改 HTML。我不想这样做,我希望它是动态的,按照我想要发送到 UI 的指令集。
标签: c# html knockout.js