在C#MVC 5中保持可观的巨大视野

时间:2014-12-04 09:02:11

标签: c# asp.net-mvc razor

我有一个使用MVC5和C#和Razor Engine的应用程序。此视图显示一个巨大的表:

<table class="table table-bordered" id="pendingTable">
    <thead>
        <tr>
            <th>Actions</th>
            <th>Order Status</th>
            <th>Order Details</th>
            <th>Order Date</th>
            <th>Expected Delivery Date</th>
            <th>Ordered By</th>
            <th>Employee ID</th>
            <th>Employee Status</th>
            <th>Employee Name</th>
            <th>Employee Type</th>
            <th>Scope</th>
            <th>Delivery Address</th>
            <th>Comment</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td></td> <!-- At least 8 TDs each one with hundreds of lines of code-->
        </tr>
    </tbody>
</table>

现在,问题在于一切都在一个巨大的文件中。你可以猜到,这个文件是一个更新和维护的噩梦。

所以我熟悉C#region指令,但我找不到任何类似于视图的simillar。我也知道部分视图,但我对StackOverflow中的讨论有强烈的印象,这些应该仅在我在View中有一段可重用的代码时使用,但实际情况并非如此。

处理这么大的视图的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

使用PartialView是正确的方法。

即使只在一个地方使用,PartialView对于实现关注点的分离也很有用,就像你的情况似乎在这里一样,将大文件分隔成更小的文件更容易阅读和维护。

但是,如果您最终在View中拥有严肃的逻辑,请考虑创建一个处理该逻辑的ViewModel类。

例如,您可以针对不同的用户类型使用不同的ViewModels。随后,您可以使用单独的PartialViews来呈现有关不同用户类型的信息。

现在假设您正在寻找便宜的解决方案。如果您有时间并希望查看更复杂,更有效的解决方案,请在评论中关注Stephen Muecke advice。他正确地指出,最好的方法是使用EdiorTemplate和/或自定义HtmlHelper