C# MVC模型是Poco类,结构有数据层还是业务层?

C# MVC模型是Poco类,结构有数据层还是业务层?,c#,.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,C#,.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我是MVC新手,如果您能澄清我的问题,我将不胜感激 什么是模型 它是否只是具有字段/属性的Poco类,例如Person类 或者模型是包含数据的数据结构,例如List或List 或者根据asp.net,工作模型是业务层或服务层,可以有业务规则、逻辑、验证,我可以与其他层对话 感谢您的帮助和指导。一个重要注意事项是“ASP.Net MVC”中的“模型”与经典中的“模型”不同,因此在查找定义/资源时要小心。中介绍了“经典MVC中的模型” ASP.NETMVC中的“模型”是对象(通常是class),理想

我是MVC新手,如果您能澄清我的问题,我将不胜感激

什么是模型

它是否只是具有字段/属性的Poco类,例如Person类

或者模型是包含数据的数据结构,例如
List
List

或者根据asp.net,工作模型是业务层或服务层,可以有业务规则、逻辑、验证,我可以与其他层对话

感谢您的帮助和指导。

一个重要注意事项是“ASP.Net MVC”中的“模型”与经典中的“模型”不同,因此在查找定义/资源时要小心。中介绍了“经典MVC中的模型”

ASP.NETMVC中的“模型”是对象(通常是
class
),理想情况下提供呈现特定视图所需的所有数据

对此类物体是否用于任何其他目的没有任何限制。如果视图显示数据访问层中的一个特定项目(如
Person
),则可以轻松地在数据访问层中共享同一对象,并将其用作视图模型

请注意,由于MVC5视图不能异步调用方法,因此最好确保所有数据都存在于模型类实例中,而不是让视图调用DB/其他远程服务。

一个重要注意事项是“ASP.Net MVC”中的“模型”与经典中的“模型”不同,因此在查找定义/资源时要小心。中介绍了“经典MVC中的模型”

ASP.NETMVC中的“模型”是对象(通常是
class
),理想情况下提供呈现特定视图所需的所有数据

对此类物体是否用于任何其他目的没有任何限制。如果视图显示数据访问层中的一个特定项目(如
Person
),则可以轻松地在数据访问层中共享同一对象,并将其用作视图模型


请注意,由于MVC5视图无法异步调用方法,因此最好确保所有数据都存在于模型类实例中,而不是让视图调用DB/其他远程服务。

视图模型和数据模型。Poco模型被视为数据模型。 Poco模型也可以用作视图模型,但最好对视图使用单独的模型。因为ViewModel可以由一个或多个Poco模型组成

您将在此处找到更多详细信息:


视图模型和数据模型。Poco模型被视为数据模型。 Poco模型也可以用作视图模型,但最好对视图使用单独的模型。因为ViewModel可以由一个或多个Poco模型组成

您将在此处找到更多详细信息:


Related:@RowanFreeman-注意链接是关于“经典MVC”的,它不同于APS.Net MVC(我在我的答案中添加了您找到的链接,谢谢)是的,但原则是一样的。使用哪种技术并不重要。如果您在ASP.NET MVC的上下文中问“什么是模型?”的话,所有MVC实现都会有几乎相同的答案。我刚刚读了你的答案@AlexeiLevenkov。在这个阶段我不同意,但我会进一步研究,因为这些信息对我来说是新的。@RowanFreeman-事实上,原理是相似的,但不一样。ASP.NET MVC的实现方式与更经典的MVC完全不同。web实现的无状态性质部分是原因。而且,您所指的MVC应用程序类型往往会模糊UI和业务或数据层之间的界限,大多数设计良好的web应用程序都会尝试将它们非常清晰地分开。因此,在ASP.NET MVC中,模型是视图模型,而不是数据或业务模型,因为否则UI将与其他层紧密耦合。相关:@RowanFreeman-注意链接是关于“经典MVC”,它不同于APS.NET MVC(我在我的答案中添加了您找到的链接,谢谢)是的,但原则是相同的。使用哪种技术并不重要。如果您在ASP.NET MVC的上下文中问“什么是模型?”的话,所有MVC实现都会有几乎相同的答案。我刚刚读了你的答案@AlexeiLevenkov。在这个阶段我不同意,但我会进一步研究,因为这些信息对我来说是新的。@RowanFreeman-事实上,原理是相似的,但不一样。ASP.NET MVC的实现方式与更经典的MVC完全不同。web实现的无状态性质部分是原因。而且,您所指的MVC应用程序类型往往会模糊UI和业务或数据层之间的界限,大多数设计良好的web应用程序都会尝试将它们非常清晰地分开。因此,在ASP.NET MVC中,模型是一个视图模型,而不是数据或业务模型,因为否则UI将与其他层紧密耦合。我会将模型的定义称为ViewModel。ViewModel是一个对象,它确切地包含视图显示所有内容所需的内容。但是,模型是域的表示。例如,在StackOverflow的情况下,模型可能是一个用户、一个问题、一个答案、一条评论、一个投票、一个标签、一个徽章等等。这些通常表示为类的实例,但这更多的是如何实现或表示模型,而不是这个概念的示例。@RowanFreeman它确实是“视图模型”,但在整个ASP.Net MVC中,术语“模型”就是这个意思(有时用“视图模型”来澄清,但通常不是)。当ASP.Net MVC相关文本中提到经典的“M”时,它通常称为“域模型”,以明确区分“模型”(默认情况下是“视图模型”)。@RowanFreeman-Alexi试图说的是ASP.Net MVC主要是基于MVC模式的表示层框架,因此不了解任何其他层,例如业务层或数据层。