Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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_Razor_Asp.net Mvc 5_Viewmodel - Fatal编程技术网

C# 使用带外键的ViewModel

C# 使用带外键的ViewModel,c#,asp.net-mvc,razor,asp.net-mvc-5,viewmodel,C#,Asp.net Mvc,Razor,Asp.net Mvc 5,Viewmodel,我有一个简单的场景,但不知道如何设置ViewModel。我有一个CustomerController.cs、Create.cshtml和Edit.cshtml。在这些视图中,我有一些字段可以接收基本的客户信息,如姓名、电话、传真、电子邮件 在我的客户表中有一个外键,名为AddressId。地址表由AddressId、Address1、Address2、City、State、Zip等列组成 我使用的是实体框架,所以我可以通过执行customer.address简单地获得客户的地址 我的表单由cus

我有一个简单的场景,但不知道如何设置ViewModel。我有一个CustomerController.cs、Create.cshtml和Edit.cshtml。在这些视图中,我有一些字段可以接收基本的客户信息,如姓名、电话、传真、电子邮件

在我的客户表中有一个外键,名为AddressId。地址表由AddressId、Address1、Address2、City、State、Zip等列组成

我使用的是实体框架,所以我可以通过执行customer.address简单地获得客户的地址

我的表单由customer和address字段组成,这就是我的困惑所在。我是否需要所有的地址字段,我是否至少需要作为外键的AddressId,我是否不需要AddressId,只需要address,等等

以下是我当前在CustomerInfoViewModel中拥有的内容:

我在页面上有一个州和国家的下拉列表,所以我想我只需要州和国家的ID。因此,我不清楚我是执行上述所有操作,还是只添加以下地址字段而不添加所有地址字段:

public Address Address { get; set; }

你也应该能做到。最大的决定因素是您是否希望将属性拉入并绑定到视图模型或实体模型。因此,您是否决定:

[HttpPost]
public ActionResult Edit(CustomerInfoViewModel vm)


这实际上更多的是关于代码样式。

当前CustomerInfo视图模型的一个优点是,您可以灵活地添加视图特定的验证属性,例如,您可以将[RegularExpression]属性应用于ZipCode。视图模型还应包括您用于州和国家/地区的SelectList的属性
[HttpPost]
public ActionResult Edit(CustomerInfoViewModel vm)
[HttpPost]
public ActionResult Edit(Customer model)