我是应该将我的观点分成很多小视图还是只是制作一个大视图?

时间:2014-05-30 12:59:42

标签: c# asp.net-mvc

我目前正在开发一个MVC 3 Web应用程序项目,我需要在首页上显示大量信息。我在网页布局和设计上相对较新,所以我在如何构建此页面背后的代码方面遇到了障碍。

我的第一个想法是将页面(View)拆分为尽可能多的页面(小视图),以便View Models更小,更易于管理。虽然我不确定这是否是正确的解决方法。或者我应该尝试将页面的所有需求放入一个能够显示我需要的所有信息的视图中吗?

3 个答案:

答案 0 :(得分:2)

将大型视图对象拆分为较小的视图会带来许多好处,主要是可重用性,可测试性以及从现在开始两个月后不可避免地要做的事实。

使用较小的视图将首先使您能够在项目的其他部分重用这些视图(应该有一个"如果需要",但你可能会有相当高的机会)。使用单一视图不会给您带来这样的灵活性。

较小的视图也将更容易概念化(一个简洁,适当命名的视图将节省您阅读其一百行的时间),维护(您可以隔离错误,并对每个视图进行功能更改而不会影响其他)和测试(及时,复杂性和依赖注入)。

你没有通过使用一个单一的,巨大的观点获得任何东西(好吧,也许是几分钟的发展),但你在漫长(和短暂)时期内所遗漏的东西是巨大的。

要在MVC3中使用多个较小的视图,您可以在主视图中使用部分视图,

<div>
  @Html.Partial("_PartialView", new PartialViewModel)
</div>

答案 1 :(得分:2)

是的,即使您确定某些部分视图不会被重复使用,将大视图拆分为部分视图也可能是积极的。如果您的大视图在概念上被划分为多个部分,则相应地拆分视图是有意义的。在具有大量嵌套div标签的大型视图文件中,这些部分可能不明显。当然,找到合适的平衡点。每个div标签的部分视图都是过度的。 :)

@{
    Layout = "~/Views/Shared/_Layout.cshtml"
}

<div id="page">
    @Html.Partial("Top")
    @Html.Partial("Middle")    
    @Html.Partial("Bottom")        
</div>

答案 2 :(得分:1)

这得到了#34的良好答案;它取决于&#34; :)

如果首页的不同部分可以在其他地方使用,那么将其分解为几个逻辑局部视图是有意义的。但是,如果没有,没有理由打破它。你应该简单地构建一个设计精美的视图模型。

如果不了解更多细节,可能就像这个非常粗糙的例子:

public class FrontPageViewModel
{
    public Section1Model section1 { get; set; }
    public Section2Model section2 { get; set; }
    public Section3Model section3 { get; set; }
    public Section4Model section4 { get; set; }
}

...您的剖面模型使用逻辑属性构建

public class Section1Model
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
    public string Property3 { get; set; }
}

public class Section2Model
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
    public string Property3 { get; set; }
    public string Property4 { get; set; }
    public string Property5 { get; set; }
}
// etc.

然后在你看来你可以这样做:

<div id="section1Content">
    @Html.DisplayFor(m => m.section1)
</div>
<div id="section2Content">
    @Html.DisplayFor(m => m.section2)
</div>
<!-- etc. -->