我使用 MVC 的时间不长,但是,在我的商店中,ViewModel 是我们构建我们想要传递给视图的数据的方式,帮助我理解它的方法之一是它可以用来将两个或更多模型在特定视图中使用。
模型设置您希望对象具有的属性,在此示例中,联系人返回类型“Person”,ContactAddress 返回类型“地址”(我使用了不同的数据类型,因为我认为它是一个更清晰的示例,我希望我没有t混淆任何东西):
public class Models
{
public Person Contact
{
// properties of first Model
string firstName;
string lastName;
}
public Address ContactAddress
{
// properties of second Model
string Address1;
string Address2;
string City;
string State;
string Zip;
}
}// EndModels
ViewModel 我们知道我们的最终视图将需要联系人数据以及他们的 ContactAddress 数据。我们可以使用 ViewModel 作为一种方式来保存两组数据并将其传递给我们的视图。
public class ContactVM
{
// properties of the ViewModel, to hold data for each Model we need to pass to the view
public Person Contacts {get; set;}
public Address ContactAddresses {get;set;}
// Constructor
public ContactVM()
{
Contacts = new Person();
ContactAddresses = new Address();
}
}
控制器 控制器将调用 ViewModel,然后调用每个 ViewModel 属性以使用正确的数据填充它们。有很多方法可以做到这一点,但为了便于举例,我将其排除在外。
public ActionResult Index()
{
// create an instance of the ViewModel
ContactVM contacts = new ContactVM();
// make calls to populate your ViewModel properties with the correct data
contacts.Contacts = //call to populate your Contact data here
contacts.ContactAddresses = //call to populate your Address data here
// pass the ViewModel to the View for use
return View(contacts);
}