首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该把我的观点分成很多小视图,还是把它变成一个大视图?

我应该把我的观点分成很多小视图,还是把它变成一个大视图?
EN

Stack Overflow用户
提问于 2014-05-30 12:59:41
回答 3查看 3.5K关注 0票数 2

我目前正在研究一个MVC 3 Web应用程序项目,在那里我需要在头版上显示很多信息。我是相对较新的网页布局和设计,所以我遇到了墙,在如何构造代码背后的这一页。

我的第一个想法是把页面(视图)分割成尽可能多的页面(小视图),这样视图模型就更小、更容易管理。虽然我不确定这是否是正确的做法。或者,我是否应该尝试将页面的所有需求整合到一个视图中,以显示我所需要的所有信息?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-30 13:59:53

将一个大视图对象拆分为更小的视图,主要是可重用性、可测试性,以及两个月后您不必(不可避免地)这样做,您将获得许多好处。

首先,使用较小的视图将使您能够在项目的其他部分重用这些视图(如果有必要的话,应该有一个“如果需要”,但您很有可能重用这些视图)。使用单一视图没有提供这样的灵活性。

更小的视图也更容易概念化(一个简洁、正确命名的视图将节省您阅读其100行的时间)、维护(您可以隔离bug,并在不影响其他视图的情况下对每个视图进行功能更改)和测试(在时间、复杂性和依赖性注入方面)。

使用单一的、巨大的视图(嗯,也许几分钟的开发)并不能获得任何好处,然而,在长(短)的时间里,您错过的是大量的东西。

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

代码语言:javascript
运行
复制
<div>
  @Html.Partial("_PartialView", new PartialViewModel)
</div>
票数 2
EN

Stack Overflow用户

发布于 2014-08-01 17:19:58

是的,将一个大视图分割成部分视图可能是积极的,即使您确实知道部分视图不会被重用。如果您的大视图在概念上被划分为几个部分,那么对视图进行相应的划分是有意义的。在包含大量嵌套div标记的大型视图文件中,这些部分可能并不明显。当然,找到正确的平衡。每个div标记的部分视图将是过度的。:)

代码语言:javascript
运行
复制
@{
    Layout = "~/Views/Shared/_Layout.cshtml"
}

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

Stack Overflow用户

发布于 2014-05-30 13:41:10

这得到了“看情况而定”的好答案:)

如果头版的不同部分可以在其他地方使用,那么将其分成几个逻辑上的部分视图是有意义的。但是,如果没有,就没有理由把这一切都搞砸了。您应该简单地构建一个设计良好的视图模型。

如果不知道更多的细节,也许就像这个非常粗糙的例子:

代码语言:javascript
运行
复制
public class FrontPageViewModel
{
    public Section1Model section1 { get; set; }
    public Section2Model section2 { get; set; }
    public Section3Model section3 { get; set; }
    public Section4Model section4 { get; set; }
}

..。其中,您的节模型是用逻辑属性构建的。

代码语言:javascript
运行
复制
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.

在你看来,你可以这样做:

代码语言:javascript
运行
复制
<div id="section1Content">
    @Html.DisplayFor(m => m.section1)
</div>
<div id="section2Content">
    @Html.DisplayFor(m => m.section2)
</div>
<!-- etc. -->
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23955248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档