将ViewModel与外键一起使用

时间:2015-02-15 15:19:46

标签: c# asp.net-mvc razor asp.net-mvc-5 viewmodel

我有一个简单的场景,但无法弄清楚如何设置ViewModel。我有CustomerController.csCreate.cshtmlEdit.cshtml。在这些视图中,我有字段可以获取基本的客户信息,如姓名,电话,传真,电子邮件。

我的Customer表中有一个名为AddressId的外键。 Address表包含AddressId, Address1, Address2, City, State, Zip等列。

我正在使用实体框架,所以我只需通过Customer.Address

获取客户的地址

我的表单由客户和地址字段组成,这是我的困惑所在。我是否需要所有的地址字段,我至少需要AddressId这是外键,我不需要AddressId,但只是Address等。

以下是我目前在CustomerInfoViewModel中的内容:

public string Name { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string Fax { get; set; }
public int AddressId { get; set; }
//Address fields
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }

[Display(Name = "State")]
public int StateId { get; set; }

[Display(Name = "Zip Code")]
public string ZipCode { get; set; }

[Display(Name = "Country")]
public int CountryId { get; set; }

我在页面上有StateCountry下拉菜单,因此我认为我只需要StateCountry的ID。因此,我对是否执行上述所有操作感到困惑,或者只是添加所有Address字段而不是添加:

public Address Address { get; set; }

1 个答案:

答案 0 :(得分:0)

你也应该这样做。最大的决定因素是您是否要将属性拉入并将属性绑定到视图模型或实体模型。所以,无论你决定:

[HttpPost]
public ActionResult Edit(CustomerInfoViewModel vm)

或者

[HttpPost]
public ActionResult Edit(Customer model)

它更多的是代码风格。