Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 模型和视图模型之间的区别_Asp.net Mvc_Asp.net Mvc 3_Model_Viewmodel - Fatal编程技术网

Asp.net mvc 模型和视图模型之间的区别

Asp.net mvc 模型和视图模型之间的区别,asp.net-mvc,asp.net-mvc-3,model,viewmodel,Asp.net Mvc,Asp.net Mvc 3,Model,Viewmodel,我一直在为一个新项目研究asp.NETMVC项目结构,有一个问题让我困惑。模型和视图模型之间有什么区别?我说视图模型包含表单属性中的模型是否正确?ViewModel是根据特定视图调整的业务域层中的模型版本 它只有与视图相关的属性,不应该有方法(除了像ToString()这样的简单方法) ViewModel只是一个“数据容器”。模型只是应用程序中对象的表示。但是,有几种不同类型的模型需要注意 域模型:这表示应用程序中的域对象,如使用ORM(Linq2SQL,EF)的SQL表 视图模型:这表示希望最

我一直在为一个新项目研究asp.NETMVC项目结构,有一个问题让我困惑。模型和视图模型之间有什么区别?我说视图模型包含表单属性中的模型是否正确?

ViewModel
是根据特定视图调整的业务域层中的模型版本

它只有与视图相关的属性,不应该有方法(除了像
ToString()
这样的简单方法)


ViewModel
只是一个“数据容器”。

模型只是应用程序中对象的表示。但是,有几种不同类型的模型需要注意

  • 域模型:这表示应用程序中的域对象,如使用ORM(Linq2SQL,EF)的SQL表

  • 视图模型:这表示希望最终用户查看/编辑/等的对象。视图模型可以包含多个域模型的属性,也可以不包含域模型的属性,并且通常排除最终用户不应处理的属性。视图模型应仅包含向最终用户显示特定请求的适当数据所需的元素


  • 关于视图模型及其使用,请参阅。

    模型通常与数据的存储方式(数据库、服务等)关系更密切,并且模型与这些模型非常相似

    另一方面,ViewModel与数据呈现给用户的方式密切相关。它通常是模型的扁平化版本、非规范化版本等。它可以是多个模型的聚合

    对于典型的
    Person
    对象,模型可能包含以下属性:

    • 名字
    • 姓氏
    • 生日
    但是,在ViewModel中,您可以选择以不同的方式表示它,并具有类似以下内容:

    • 全名
    • 年龄

    我有一个博客,我想在一个视图中显示最新帖子、最新评论和帖子类别的列表。我怎么能做到?我可以将我的视图强输入到任何一个模型,对吗?这里有一个视图模型

    我创建了一个名为
    BlogViewModel
    的视图模型,其中包含最新的帖子、最新的评论和其他内容作为属性,我用这个模型绑定了我的视图。
    发布
    评论
    。。是域模型,
    BlogViewModel
    是我专门为视图创建的视图模型


    明天我将在手机版上展示我的博客,届时我可能会创建一个只包含较少属性的简单视图模型。最后视图模型用于视图,大多数情况下它们充当真实域模型的包装器

    你可以用谷歌搜索。所以它本身就有很多问题。这个主题。这个问题完美地回答了这个问题。我想补充一点,模型对象应该表示对象的语义/概念结构、其内在/自然属性和行为,而不是它实际的存储方式。存储取决于实现细节,这些细节不是对象的实际特征。@heltonbiker,这是一个很好的观点。我认为有很多模型,视图模型、业务逻辑模型、数据存储模型等等。我们经常会遇到困难,因为我们不接受它们各自的差异,而是关注它们的相似性。我可能很快就会写一篇关于这一点的博文;)在我看来,建模是最重要的开发活动中最被忽视的(至少在我所知道的大多数地方…)