-6

在 mvc 中,我们怎么能说松散耦合和完全控制 html,任何机构都可以解释我,任何参考,我在谷歌搜索但我不清楚。

4

3 回答 3

1
  • 松散耦合

ASP.NET MVC 与标准 HttpContext 类(例如 HttpContextBase、HttpRequestBase、HttpResponseBase、HttpSessionBase)的抽象一起工作,这允许更轻松地进行独立的单元测试,因为这些类是抽象的并且可以被模拟。在经典的 ASP.NET WebForms 中,对代码进行单元测试要困难得多,因为它依赖于几乎不可能模拟的真实 ASP.NET 上下文类,因为它们需要真实的上下文才能工作。恕我直言,与经典的 WebForms 相比,这是 ASP.NET MVC 最好的事情之一。

此外,您在各个方面之间有更清晰的分离:模型逻辑、视图逻辑和控制器逻辑。这并不意味着在经典 WebForms 中您无法实现这种分离。如果您遵循将所有内容放在视图中并将代码放在后面的标准方法,那就有点困难了。

  • 完全控制 html

与经典的 ASP.NET WebForms 相反,您在 WebForm 中放置一个 UserControl,它在运行时为您生成 HTML(对生成的 HTML 具有或多或少的控制权),在 ASP.NET MVC 视图中,是您编写 HTML因此,您可以编写任何您喜欢的 HTML。

于 2013-05-09T15:40:55.590 回答
0

这两个想法(在某种程度上)是分开的。这可能就是你的困惑所在。

ASP.NET MVC(以及一般的 MVC 范例)被认为是松散耦合的,因为每个关注点(模型、视图和控制器)处理应用程序的不同方面。模型 = 数据,视图 = 用户界面,控制器管理这两者和业务逻辑之间的交互(如果您使用 MVC 的洋葱范式有额外的子层,则可以进一步分离)。这种关注点分离可以改进用户测试、模拟和重构,这是 WebForms 所没有的(或者至少不是那么容易)。

您可以完全控制 HTML 的原因在于 ASP.NET 的历史。ASP.NET 最初是从 WebForms 开始的。WebForms 是为了响应开发人员非常喜欢他们能够创建的应用程序的“拖放”和“点击”范例而创建的。将一个按钮拖到屏幕上,双击得到一个与之关联的动作,写一些代码,完成!很容易。

同时,这种轻松隐藏了许多正在发生的潜在“事情”。按照设计,HTTP 是无状态的。WebForms 专门隐藏了所有这些无状态,实际上试图通过围绕管理 ViewState 的许多不同技术使 HTTP 看起来是有状态的。此外,这种拖放范例消除了人们直接对其 HTML 的控制。ASP.NET MVC 通过让您直接在视图中编写 HTML 来“修复”该问题(有些人不认为这是一个修复 - 这取决于您关心的内容)。因此……更多的控制。

有关 WebForms 模型的其他一些有用信息:https ://stackoverflow.com/questions/46031/why-does-the-asp-net-web-forms-model-suck

于 2013-05-09T15:42:17.190 回答
0

尽管您的问题非常模棱两可,但我仍然假设您正在与 asp.net 进行比较,并且您已经在互联网上的某个地方阅读过此行。

  1. 松散耦合——这主要适用于用于开发完整网站的单元。在 Asp.net MVC 或任何其他 MVC 模式中,MVC 本身代表模型-视图-控制器,因此这是关注点的分离,并且每个项目都不是它的意思,ie-view 处理所有 ui层意味着可以单独测试每个单独的实体。

  2. 完全控制 HTML - 在传统的 asp.net 中,标记是由 asp.net 框架生成的,因为使用了许多服务器控件。在 asp.net MVC 中,所有标记都是由用户编写或至少是可编辑的

要了解它,请阅读有关 MVC 模式及其在 asp.net MVC 中的使用方式的更多信息

于 2013-05-09T15:41:24.703 回答