两个不同的ViewModel可以指向同一个对象吗?

时间:2017-11-18 08:27:40

标签: c# asp.net-mvc

假设我有两个ViewModel,它们都完成了对象的属性。我在一个视图中获得一些属性,在另一个视图中获得其他属性。我如何将它们绑定在一个对象中? 这是预订课程

public class Booking
    {
        [Key]
        public int ID { set; get; }
        public string departFrom { set; get; }
        public string departTo { set; get; }
        public int memberID { get; set; }

        public DateTime departureDate { set; get; }
        public DateTime returnDate { set; get; }

       [ForeignKey("departTo")]
       public virtual Flight flight { get; set; }
       [ForeignKey("memberID")]
       public virtual Memeber member { get; set; }
    }

现在我在ViewModel的第一个视图中,我只获取日期和departFrom和departTo位置:

public class BookingViewModel1
    {
        [Key]
        public int ID { set; get; }
        public string departFrom { set; get; }
        public string departTo { set; get; }

        public DateTime departureDate { set; get; }
        public DateTime returnDate { set; get; }
        [ForeignKey("departTo")]
        public virtual Flight flight { get; set; }
    }

现在我想将这些值发送到另一个View,这样我就可以输入成员属性以便在我的数据库中保存Booking。 这是另一个ViewModel:

public class BookingViewModel2
    {
        public int memberID { get; set; }

        [ForeignKey("memeberID")]
        public virtual Member member { get; set; }
    }

所以在控制器中我想将它们绑定在一起,这样它们就可以指向同一个对象。

1 个答案:

答案 0 :(得分:1)

是的你可以这样做有不同的方法,其中一个是使用

Tuple 在视图的开头

喜欢这个

注意永远不要像双语那样在双引号内写出模型

@model Tuple <"OneModel","twoModel">
@html.TextBoxFor(model.item1.modelPropertie)
@html.TextBoxFor(model.item2.modelPropertie)