【问题标题】:In ASP.NET MVC (3.0/Razor), do you prefer multiple views, or conditionals within views? Why?在 ASP.NET MVC (3.0/Razor) 中,您更喜欢多视图还是视图中的条件?为什么?
【发布时间】:2011-01-08 11:54:21
【问题描述】:

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

一个示例场景是向已通过身份验证和未通过身份验证的用户显示不同的信息。这可以通过几种方式处理。

  1. 在控制器中,检查 IsAuthenticated 并返回基于此的视图
  2. 在视图中,检查 IsAuthenticated 并显示基于此的信息块

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

单一视图的优点:需要维护的视图文件更少

明显的缺点与优点相反:需要维护的文件更多或更复杂的视图文件。

你更喜欢哪个?为什么?我没有在这里列出的任何优点/缺点?

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

【问题讨论】:

    标签: c# asp.net-mvc razor


    【解决方案1】:

    这听起来像是一个讨论避免过早概括的优点的好地方。作为过早优化的表亲,PG 可以同样严重。我这样说是因为我经常过早地概括,这往往会阻止女士们和我调情,嘲笑我的搞笑笑话等。

    见:http://ryanfarley.com/blog/archive/2004/04/30/570.aspx

    我的一般经验法则是:

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

    我倾向于在我的Views和我的Partials中遵循这一原则:

    1. 我创建了我的第一个视图 -- 否 部分。
    2. 我创建了我的第二个视图 -- 否 部分。
    3. 我通过以下方式创建第三个视图 从 第一个和第二个视图变成可重用的 部分。
    4. 我重复一遍,直到激浪消失。

    虽然我对您的问题的回答可能看起来很明显,但我想我想说的是,作为开发人员,我们往往喜欢浪费大量时间来思考我们可以抽象出更多和来自我们的个性化实例的更多层。具有讽刺意味的是,抽象只有在它减少重复的必要性时才有价值,而重复只有在它降低你完成任何事情的可能性时才有害,所以重复过度抽象的愿望与使用一堆ON ERROR RESUME NEXT

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

    【讨论】:

    • 关于过早概括的问题我完全同意你的看法。除了我不喝山露......那东西很讨厌:)
    • 大声笑,很好。我也同意你说的。只是把它扔在那里,以防有一些我没有想到的角度。很好的经验法则,你到了那里。而且,感谢 Chirpy ......就像很棒的产品,我现在在每个项目中都使用它。
    • 乍得——这是一个很好的问题。而且,具有讽刺意味的是,我对此的回答有点抽象和过于笼统。另外,非常感谢 Chirpy 的信用——让我继续前进!
    • 我会说大多数不必要的抽象是程序员出于恐惧而不是享受而引入的。
    【解决方案2】:

    如果只是“如果 x 显示 y”的情况,我更喜欢单一视图。除此之外,它很容易失控。不过,减少重复的 html 值得牺牲一些简单的逻辑。

    我怀疑这方面的答案几乎会在中间分裂,因为每一方都有自己的优点。

    【讨论】:

    • 是的......我问是因为也许有一些我没有想到的东西(好吧,好吧......可能有一些我没有想到的东西)。 ;)
    【解决方案3】:

    我会说这取决于两种情况的不同之处。如果是主要差异或差异,请单独查看。如果它是出现在多个页面上的差异(例如显示登录控件与退出按钮),请将其放入单独的局部视图中。对于一些微小的差异,一个 if 块是可以的

    【讨论】:

    • 好点。如果差异如此之小,那么使用 2 个单独的视图可能是个坏主意。
    【解决方案4】:

    我会说从单个视图开始...然后根据经过身份验证和未经身份验证的视图之间的区别有多复杂,您可以创建多个视图。

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多