如果我分配了某些内容,可以是string
或int
,ViewData
,我会在视图中使用它。这是ViewData
和ViewBag
被视为DTO吗?
您可以为他们分配一个对象,但您不必这样做。
是否有时候这些被认为是数据传输对象?
答案 0 :(得分:1)
是的,分配给ViewData或ViewBag的数据传输对象中的值在视图中被视为相同的方式。就像在DTO中有一个int类型变量一样,在视图中,您可以通过ViewBag将其作为int访问。字符串和其他类型变量的情况相同
答案 1 :(得分:1)
只有在跨层,服务或应用程序传输数据时,我个人才会使用术语DTO。
Wikipedia将其定义为:
是一个在进程之间传输数据的对象
StackOverflow上这个高度赞成的answer说:
数据传输对象是一个对象,用于封装数据,并将其从应用程序的一个子系统发送到另一个子系统。
和
DTO最常用于N层应用程序中的服务层,用于在自身和UI层之间传输数据。
这里我们讨论的是从服务层向Web应用程序发送数据,这些应用程序是不一定位于同一台机器上的独立IIS应用程序。
对于ViewBag,您仍然位于同一层/子系统,即Web应用程序,并且不会跨越任何应用程序边界。
你可能会认为视图和控制器是不同的子系统,但这会拉伸它,因为它们都在同一个编译单元(相同的dll)中。您还可以争辩说,任何用作两个其他类之间的数据结构的类都是DTO,但这与DTO的常用定义不一致,因为所有业务对象都有资格作为DTO。