1

是否可以调用多个存储过程(不是一个过程的多个结果集)并在 ASP.NET MVC 3 应用程序的单个页面上显示结果?

据我了解,在任何单个页面上只能创建一个模型,并且我的存储过程已经绑定到该模型。我想调用另一个程序并在我的页面上显示该结果

4

2 回答 2

2

我认为根本问题是要理解MVC 模式中Model的含义。

首先,

模型由应用程序数据和业务规则组成,控制器调解输入,将其转换为模型或视图的命令。 [3] 视图可以是数据的任何输出表示,例如图表或图表

资源

在 ASP.Net MVC 中,您将模型链接到您的视图,此模型不应该是您的域逻辑或任何域对象的一部分

真正的模型(使用 MVC 模式的含义)由您的域对象表示。

那么您应该在链接到视图的对象中放入什么?

这些对象应该包含视图的表示,换句话说,简单的 DTO包含将在视图中使用的数据,仅此而已。这些模型应该代表视图中使用的数据。如果您遵循这种方法,并且需要在页面中显示更多数据,则只需向此模型添加另一个属性,瞧,您可以从视图中使用它。

在 CQRS 架构中,这些 DTO 应该由Query repositories填充。

如果您没有 CQRS 架构,只需将这些对象填充到您的域、存储库等中。不要在控制器内部执行此操作,通过使用服务或存储库调用您的真实域来保持控制器清洁和简单

尽量避免重复使用这些 DTO,它们应该只属于一个视图。帮自己一个忙,不要试图重用域对象而不是 DTO 只是为了将其用作模型。

按照这种方法,您的视图模型将是干净的,因为它们将只是 DTO 并且仅包含视图所需的数据。您可以从不同的来源填充这些 DTO,如果需要,甚至可以从不同的数据库中填充。

当您想要执行某个操作时,您将从模型中读取用户提供的数据,并使用这些数据通过存储库、服务或在 CQRS 弧中调用您的域。使用命令

于 2012-06-12T23:31:00.557 回答
1

您的问题的简单答案是“是”。

我建议您对 MVC 进行更多研究(即阅读文章和查看示例应用程序)并专注于理解以下几点:

  • Model是一个类,用于对要在View中显示的数据进行分组。它可以通过多种方法填充,不必是域对象或数据库结果的纯粹表示。
  • “页面”(用户在浏览器窗口中看到的概念)可以由一个或多个Views组成。每个View可以负责显示一种允许重用的Model ,但是一个“页面”可以有多个 Views
  • 模型没有“绑定”到存储过程。也许您正在使用返回 DTO 类(称为模型)的 ORM 工具?这不一定是View使用的Model控制器可以将这些 DTO 类中的几个组合成一个模型类。
  • N 层应用程序设计,其中数据库访问与显示逻辑分离。MVC 试图鼓励这一点,但它仍然必须正确地完成,以避免让自己陷入困境。

祝你好运!

于 2012-06-13T00:08:06.047 回答