Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
C# 两个不同的ViewModel能否指向同一对象?_C#_Asp.net Mvc - Fatal编程技术网

C# 两个不同的ViewModel能否指向同一对象?

C# 两个不同的ViewModel能否指向同一对象?,c#,asp.net-mvc,C#,Asp.net Mvc,假设我有两个ViewModels,它们都完成了对象的属性。我在一个视图中获取一些属性,在另一个视图中获取其他属性。如何将它们绑定到一个对象中? 这是订票单 public class Booking { [Key] public int ID { set; get; } public string departFrom { set; get; } public string departTo { set; get; }

假设我有两个ViewModels,它们都完成了对象的属性。我在一个视图中获取一些属性,在另一个视图中获取其他属性。如何将它们绑定到一个对象中? 这是订票单

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,其中我仅获取日期以及出发地点和出发地点:

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; }
    }
现在我想将这些值发送到另一个视图,以便输入成员属性,以便将预订保存到数据库中。 下面是另一个ViewModel:

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

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

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

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

Tuple在视图的开头是这样的

注意,从未像我那样在双引号中写入模型

@model Tuple <"OneModel","twoModel">
@html.TextBoxFor(model.item1.modelPropertie)
@html.TextBoxFor(model.item2.modelPropertie)
@模型元组
@html.TextBoxFor(model.item1.modelproperty)
@html.TextBoxFor(model.item2.modelProperty)

请阅读如何解决您的问题,您的问题非常不清楚,但我会尽力解决。ViewModels不应该以我认为您想要的方式相互交谈。他们应该只在各自的模型之间传递数据。在模型中,您将数据放在它所属的位置(数据库、文件、设置、共享静态属性等),然后您可以从代码的其他部分相应地访问它。@Div I编辑了post术语是view而不是viewmodel。