【问题标题】:what is the use of ViewModel in ASP.Net MVC [duplicate]ASP.Net MVC中ViewModel的用途是什么[重复]
【发布时间】:2012-09-05 13:01:57
【问题描述】:

可能重复:
ASP.NET MVC ViewModel Pattern

我是 ASP.Net MVC 的新手。我看到人们谈论在 asp.net mvc 中使用 ViewModel,但实际上我并不清楚为什么我应该创建 ViewModel 类。

如果有人能对 ViewModel 的实际使用有所了解,并用简单的 ViewModel 代码进行解释,那就更好了。谢谢

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    当您的模型实体与您希望在屏幕上显示的内容不一一对应时,ViewModel 非常有用。

    一个简单的例子是一个存储人们信息的应用程序。想象一下你的领域模型有一个 Person 实体和一个 address 实体。每个人都有许多地址,但只有一个默认地址。在您的一个视图中,您希望显示人员的详细信息以及他们的默认地址的详细信息。如果您想针对模型(您应该这样做)保持视图的强类型,这是不可能的,因为您不能将视图键入到 2 个实体。

    这就是 viewModel 发挥最大作用的地方。您创建一个新的 viewmodel 类,它有 2 个属性,一个是 person 类型,一个是 address 类型,在您的控制器中,您用所需的信息填充这些属性,然后针对这个 Person+address 模型类键入您的视图。

    至于它们的代码,它们就像任何其他模型一样。很快就会有一个例子。

    领域模型(可能在您的数据访问层中找到,或者在单独的领域模型项目中):

    public class Person{
        public int PersonId{get;set;}
        public string Name {get;set;}
        .
        .
        .
    }
    public class Address{
        public int AddressId{get;set;}
        public string Street1 {get;set;}
        public string Street2 {get;set;}
        .
        .
    }
    

    然后你可以有一个像这样的 viewModel 类:

    public class MyViewModel{
        public Person ThePerson{get;set;}
        public Address TheAddress{get;set;]}
    }
    

    甚至

    public class MyViewModel : Person{
        public Address TheAddress{get;set;]}
    }
    

    但我更喜欢第一种解决方案,而同事经常选择第二种解决方案。然后,您的视图将针对 MyViewModel 进行强类型化,并通过以下语法访问视图中的值:@model.Person.PersonId

    【讨论】:

    • 非常感谢......你可以发布完整的代码,如控制器......模型/视图模型并将视图与视图模型数据绑定。
    • 如果你给我项目的完整规格......以及适当的费用......肯定不是问题:)你所要求的远远超出了帮助的范围如果你学习了如何使用常规模型(可能通过基本的 Asp.net-mvc 教程),你可以用 viewModel 做同样的事情,没有任何区别。
    猜你喜欢
    • 1970-01-01
    • 2019-11-14
    • 2018-09-07
    • 2016-10-29
    • 2012-06-19
    • 2012-05-06
    • 2014-08-28
    • 2017-03-01
    相关资源
    最近更新 更多