0

我的应用程序中的数据表有很多列。不同的用户需要不同的列集和特定的顺序。我正在做的事情是,我有一个与表的每一列相关联的唯一 ID,并且我将它们存储在用户首选项中。例如:

columnsToDisplay = "1,4,23,12,2,5,6,7,8,13,15"

在我看来,我正在使用if else if来迭代我的表模型(我正在使用 ASP.NET MVC)来呈现表。我觉得这不是正确的做法。想象一个有 50 列的表,并且执行 if else if 50 次!在不使用 jQuery 或任何客户端脚本插件的情况下,解决此问题的理想方法是什么?

编辑: 这就是我现在正在做的事情。我正在将每一列与使用偏好进行比较。

foreach(var col in model)
{ if(col.name == id) {
<td>{{id}}</td>}else if(col.name == customerName) {
<td>{{name}}</td>}else if(col.name == balance) {
<td>{{balance}}</td>}else if(col.name == createdOn) {
<td>{{createdOn}}</td>} 
}
.....

等等...

4

1 回答 1

0

如果这些表是只读的(您不需要能够将它们发布回服务器),您可能可以将模型数据放入IDictionary对象数组中。然后,您可以columnsToDisplay在创建视图时使用您的(作为整数数组)的值来获取相关列。

像这样,假设你的模型被称为model

model.ColumnArray = { 2, 4, 6, 1, 0 };

然后,假设model有一个名为的属性Rows,其中包含您的IDictionary对象:

@foreach(var model in Model.Rows)
{
    <tr>
    foreach(var column in Model.ColumnArray)
    {
        <td>@model[column]</td>
    }
    </tr>
}
于 2013-01-15T01:59:43.377 回答