【问题标题】:ASP.NET MVC: Am I doing it right?ASP.NET MVC:我做得对吗?
【发布时间】:2009-09-09 21:08:33
【问题描述】:

所以我是一个旧的 Web 表单人,并且是 MVC(一般而言,不仅仅是 ASP.NET)框架的新手。我的观点开始看起来很像古老的经典 ASP。不是我要添加任何业务逻辑或任何东西,而是更多的表示逻辑。我最终得到了很多<% %> 标签和if/else 语句来决定要显示的链接或要使用的样式。

我也想过在控制器中决定样式或链接并将它们设置在模型上,但听起来像是破坏了 MVC 的目的。

我最终忽略了<% %> 以确保我的 HTML 格式正确。

我想听听你的意见。你的观点和我一样吗?我是不是做错了什么?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    如果我有大量的表示逻辑,我会尝试将其移至 HtmlHelper 类的扩展中。

    【讨论】:

    • 所以你为每个案例创建一个扩展方法?
    • 这完全取决于案例和复杂性,正如 Bryan 所提到的,Partial Views 可以帮助清理事情。
    【解决方案2】:

    除了 mxmissle 所说(我投票支持他)所说的,我将做一个局部视图以将页面的复杂区域移动到一个单独的文件中,它有助于清理内容以及代码重用。

    我发现如果事情看起来有点太老派 ASP,是时候重构了。令人惊讶的是,您可以将其清理到帮助程序类或局部视图中,或者使用更简洁的东西简单地重做。

    编辑:另外,如果它看起来有点太老派的 ASP,也许你的视图中有不属于那里的逻辑。

    【讨论】:

      【解决方案3】:

      我通常为每个视图创建一个特定的 ViewModel 类,其中包含与特定视图关联的任何逻辑。这适用于条件的结果只是一个简单的 DIV 或 SPAN 标记的情况,这些标记并不真正保证它们自己的扩展或部分视图。

      我发现它会清除我观点中许多经典的 ASP'ish 外观。

      有关此方法的更多信息,请参阅Stephen Walther's blog

      【讨论】:

      • 据我了解,ViewModels 可以帮助您在控制器和视图之间来回传递数据,但对于“标签汤”方面的清理视图没有帮助。
      【解决方案4】:

      是的,你做得对。 ASP.NET MVC 在各个方面都不是对经典 Web 表单的改进。它有其优点和缺点(正如您所发现的,“标签汤”是缺点之一)。

      有几种方法可以减轻痛苦(将尽可能多的逻辑移入模型、HTML 助手、部分视图等),但很难避免。

      【讨论】:

      • 您能否提供一些示例,说明您在模型中添加了什么样的逻辑?
      猜你喜欢
      • 2017-03-12
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多