在ASP.NET MVC(3.0 / Razor)中,您更喜欢视图中的多个视图或条件吗?为什么?

时间:2011-01-07 05:24:37

标签: c# asp.net-mvc razor

对于我的新网络应用,我正在讨论在视图中使用多个视图或条件。

示例方案将向经过身份验证和未经身份验证的用户显示不同的信息。这可以通过几种方式处理。

  1. 在控制器中,选中IsAuthenticated并返回基于该
  2. 的视图
  3. 在视图中,选中IsAuthenticated并根据
  4. 显示信息块

    多个视图的优点:视图更小,更简单 - 视图中没有逻辑

    单一视图的优点:维护较少的视图文件

    显而易见的缺点是专业人员的对立面:更多要维护的文件或更复杂的视图文件。

    你更喜欢哪个?为什么?我在这里没有概述的任何利弊?

    更新:假设每个视图都使用布局页面和部分视图来抽象明显重复的代码。

4 个答案:

答案 0 :(得分:10)

这听起来像是讨论避免过早概括的优点的好地方。作为过早优化的表亲,PG可能同样瘫痪。我之所以这么说,是因为我经常过早地概括,而且往往会劝阻女士们不要跟我调情,嘲笑我搞笑的笑话等等。

请参阅:http://ryanfarley.com/blog/archive/2004/04/30/570.aspx

我的一般经验法则是:

  

重复两次。
  当你第三次重复自己时,创建一个抽象

我倾向于在观看次数偏好中遵循这一原则:

  
      
  1. 我创建了我的第一个视图 - 没有   分音。
  2.   
  3. 我创建了第二个视图 - 没有   分音。
  4.   
  5. 我创建了第三个View by   从中抽象出一些代码   第一和第二视图可重用   分音。
  6.   
  7. 我重复,直到Mountain Dew全部消失。
  8.   

虽然我对你的问题的答案看起来很明显,但我认为我要说的是,作为开发者,我们倾向于浪费大量的时间来考虑我们可以抽象出更多的不同方式。来自我们个性化实例的更多层。具有讽刺意味的是,抽象只有在减少重复的必要性的情况下才有价值,而重复只有在降低你完成任何事情的可能性时才有害,所以过度抽象的重复欲望与编码一样有害。一堆 ON ERROR RESUME NEXT

我怀疑这有帮助。但是,唉。

答案 1 :(得分:1)

我会说这取决于两种情况的差异。如果这是一个主要的差异或差异,请做一个单独的视图。如果它出现在多个页面上(例如显示登录控件与注销按钮),请将其设置为单独的部分视图。对于一些微小的差异,if块是可以的

答案 2 :(得分:1)

如果它只是一个“if x display y”情况,我更喜欢单一视图。除此之外的任何东西都很容易失控。但是,减少重复的html值得对少量简单逻辑进行权衡。

我怀疑这个问题的答案会在中间分开,因为每一方都有自己的优点。

答案 3 :(得分:0)

我想从一个视图开始......然后根据经过身份验证和未经身份验证的视图之间的差异有多复杂,您可以创建多个视图。