【问题标题】:When to use strongly typed view model or use JSON object何时使用强类型视图模型或使用 JSON 对象
【发布时间】:2011-12-20 04:24:54
【问题描述】:

在视图层和控制器层之间传递对象时,我对何时应该使用强类型视图模型和 JSON 对象感到困惑。我的理解是使用 JSON 对象遵循 MVVM 模式,并保持层松散耦合。任何反馈将不胜感激。

【问题讨论】:

  • JSon 更多用于 Ajax 或需要在客户端进行操作的东西。动态内容,您不知道您返回的确切内容。当您确切知道控制器返回的内容时,强类型视图。

标签: asp.net asp.net-mvc json mvvm


【解决方案1】:

这两种方法各有利弊。

一方面,松散类型意味着您可以在所有地方传递相同的类型,并且消费者可以使用他们想要的字段(如果存在)。这使您的程序看起来很简单,因为它具有如此简单的架构。

另一方面,这意味着您将字段解释推送给消费者,如果您有复杂的数据类型,这很快就会成为消费者处理的噩梦。

别搞错了:您将在某处处理类型安全问题。选择在哪里。

我个人更喜欢具有明确定义的接口的强类型系统,因此我建议这样做。

编辑

Randolpho,是的,我同意强类型的偏好 对象。在我的大部分应用程序工作中,我都通过了强类型 对象回到我的控制器,在那里我将映射到一个强类型 “视图模型”对象,然后将该视图模型传递回部分 / 看法。这个当前项目我正在进行 REST 调用并获取 JSON 返回的对象。这就是让我质疑我应该使用的原因 JSON 或类型化对象。 ——德里克·肯尼

如果您正在创建一个 REST Web 服务,您应该从您的视图返回 JSON,无论如何。

但在内部,我认为您最好使用与 JSON 序列化的强类型数据类型。

【讨论】:

  • Randolpho,是的,我同意强类型对象的偏好。在我的大多数应用程序工作中,我将一个强类型对象传递回我的控制器,在那里我将映射到一个强类型的“视图模型”对象,然后将该视图模型传递回部分/视图。这个当前项目我正在进行 REST 调用并返回一个 JSON 对象。这就是让我质疑我应该使用 JSON 还是类型化对象的原因。
【解决方案2】:

视图模型通常与直接返回 HTML 的控制器操作一起使用。 JSON 更适合从 AJAX 调用中使用。话虽如此,您还可以将 JSON 与客户端 UI 框架一起使用,例如 knockoutjsbackbonejs

【讨论】:

  • 谢谢达林。这是有道理的。在我当前的项目中,我通过 Javascript Ajax 调用进行操作调用,并返回我通过 JS 绑定到我的 HTML 的 JSON 对象。我只是不确定这是否是我应该做的 vs,直接返回 HTML。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
相关资源
最近更新 更多