C# 两个不同的ViewModel能否指向同一对象?
假设我有两个ViewModels,它们都完成了对象的属性。我在一个视图中获取一些属性,在另一个视图中获取其他属性。如何将它们绑定到一个对象中? 这是订票单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; }
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。