0

我对 MVC (3) 相当陌生,并且正在构建一个应用程序,它将在整个过程中使用各种数据项的列表。

我可以为每个视图构建一个视图,但认为每个视图都相似(带有数据列的 HTML 表),因此使用通用视图会更有意义。

控制器都使用 DAL 中的 Linq 来返回条目,例如

达尔

public List <MyObject> getAllEntriesOfSomeType()
{
    var myobjects = from r in db.something
                    where r.status ==1
                    select r;
    return myobjects.ToList();
}

控制器

MyObjectClass o = new MyObjectClass();

return View(o.getAllEntriesOfSomeType());

看法

在不与该对象绑定的视图中,我想动态显示列名和数据,例如

<thead>
    <tr>
        @int cols = 0;
        @foreach(c in Model.Columns)
        {
            <th>
                @cols+=1;
                @c.DisplayName
            </th>
        }
    </tr>
</thead>
<tbody>

@foreach(m in Model)
{
    <tr>
        @(int i = 1;i<=cols;i++)
        {
            <td>
                @m[i].Value
            </td>
        }
    </tr>
}
</tbody>

...

有没有(简单!)实现上述目标的方法。我想过将模型转换为 DataTable,但似乎没有一个简单的方法(阅读一些关于 ObjectShredder 的内容)

4

1 回答 1

0

MVC 实际上是为您要显示/编辑的每组数据提供不同的视图。

这样当事情发生变化时(它们会发生变化),您就有了这种分离,允许您在不影响其他视图或页面的情况下更改视图或页面。

也就是说,这并不意味着你不能对你正在做的事情很聪明。

如果您说您的数据都非常相似,那么您会遇到它们都继承自相同接口或基本类型的问题,对吗?

喜欢:

public class MyObjectClass : IMyObjectClassCommonStuff
{  
}

然后在您的局部视图中(以便您可以重用在不同页面上显示的数据),您可以像这样在视图中使用模型:

@model IList<IMyObjectClassCommonStuff>

然后,您可以像往常一样编写视图,引用界面中的公共字段。

于 2012-09-02T23:04:32.867 回答