C# 是否有办法在另一个模型详细信息页面中包含多个模型?

C# 是否有办法在另一个模型详细信息页面中包含多个模型?,c#,asp.net-mvc,class,model,entity-framework-6,C#,Asp.net Mvc,Class,Model,Entity Framework 6,我正在尝试建立一个内部网,允许将客户添加到数据库中,然后允许添加关于他们的更多信息。主要问题是,对于员工信息之类的内容,有多个员工,因此我尝试将客户信息模型放在AddCustomers模型详细信息页面中,但返回了此消息 分析器错误 描述:分析资源时出错 服务此请求所必需的。请查看以下具体内容 分析错误详细信息并适当修改源文件 分析器错误消息:文件中只允许有一个“model”语句 源错误: Line 36: Line 37: <!------------------------------

我正在尝试建立一个内部网,允许将客户添加到数据库中,然后允许添加关于他们的更多信息。主要问题是,对于员工信息之类的内容,有多个员工,因此我尝试将客户信息模型放在AddCustomers模型详细信息页面中,但返回了此消息

分析器错误

描述:分析资源时出错 服务此请求所必需的。请查看以下具体内容 分析错误详细信息并适当修改源文件

分析器错误消息:文件中只允许有一个“model”语句

源错误:

Line 36: 
Line 37: <!-------------------------------------------------------------------------->
Line 38: @model IEnumerable<Intranet.Models.EmployeeInfo>
Line 39: 
Line 40: @{

AddCustomers
中创建客户后,我希望能够添加客户信息,例如
EmployeeInfo
ContactInfo
。但是,由于有多个员工,我需要有单独的表来获取信息,并希望这些表/模型位于
AddCustomers
details视图中。

正如Stephen所说,您需要一个ViewModel,它应该是视图所需的一切(AddCustomer)。因此,根据您的描述,您可能会使用以下内容:

public class AddCustomerViewModel
{
    public AddCustomerViewModel()
    {
         Employees = new List<EmployeeInfo>();
         ContactInfo = new ContactInfo;
    }

    public int AddCustomersID { get; set; }
    public string CompanyName { get; set; }
    public string Status { get; set; }

    // Contact info - If there is only 1, you could just add the properties to the ViewModel
    public ContactInfo ContactInfo { get; set; }

    // Related employee:
    public List<EmployeeInfo> Employees { get; set; }
}
对于员工信息,由于它是一个集合,您将使用foreach循环:

// build table and header
@foreach (var employee in Model.Employees)
{
     // kick out a <tr><td>...</td></tr> for each employee
}
//生成表和头
@foreach(模型中的var employee.Employees)
{
//为每位员工推出一个
}

对于CRUD部分,您需要添加一个表单和控制器POST,如演示中所示。

正如Stephen所说,您需要一个ViewModel,它应该是视图所需的一切(AddCustomer)。因此,根据您的描述,您可能会使用以下内容:

public class AddCustomerViewModel
{
    public AddCustomerViewModel()
    {
         Employees = new List<EmployeeInfo>();
         ContactInfo = new ContactInfo;
    }

    public int AddCustomersID { get; set; }
    public string CompanyName { get; set; }
    public string Status { get; set; }

    // Contact info - If there is only 1, you could just add the properties to the ViewModel
    public ContactInfo ContactInfo { get; set; }

    // Related employee:
    public List<EmployeeInfo> Employees { get; set; }
}
对于员工信息,由于它是一个集合,您将使用foreach循环:

// build table and header
@foreach (var employee in Model.Employees)
{
     // kick out a <tr><td>...</td></tr> for each employee
}
//生成表和头
@foreach(模型中的var employee.Employees)
{
//为每位员工推出一个
}

对于CRUD部分,您需要添加一个表单和控制器POST,如演示中所示。

创建一个视图模型,其中包含所有所需模型的属性表单,并将其传递给视图-@StephenMuecke这看起来很有希望,但我可以检查一下吗。这将允许单独显示每个客户的ViewModel(例如EmployeeInfo),还是像局部视图一样工作并显示每个客户的EmployeeInfo?不清楚您的问题,因为我不知道您的视图是用于什么。例如,假设您的视图显示用于添加新客户的表单,但也显示现有客户,您的视图模型可能包含一个
客户
-比如
字符串名
等的属性,以及另一个
IEUnerable
属性,用于在视图中显示集合。@StephenMuecke那么您的意思是,对于每个
客户
而言,
员工信息
将是分开的?而且它不会全部整理成一个
EmployeeInfo
表,然后显示在每个客户详细信息页面上?对不起,但是我不明白你问什么,因为我不知道你的模型是什么,你想在视图中显示什么。创建一个视图模型,包含你想要的所有模型的属性,并将其传递给视图-@stephenmueke这看起来很有希望,但我可以检查一下吗。这将允许单独显示每个客户的ViewModel(例如EmployeeInfo),还是像局部视图一样工作并显示每个客户的EmployeeInfo?不清楚您的问题,因为我不知道您的视图是用于什么。例如,假设您的视图显示用于添加新客户的表单,但也显示现有客户,您的视图模型可能包含一个
客户
-比如
字符串名
等的属性,以及另一个
IEUnerable
属性,用于在视图中显示集合。@StephenMuecke那么您的意思是,对于每个
客户
而言,
员工信息
将是分开的?而且它不会全部整理成一个
EmployeeInfo
表,然后显示在每个客户详细信息页面上?对不起,我不明白你的要求,因为我不知道你的模型是什么,以及你想在视图中显示什么。在实现此代码之后,当我试图搭建一个控制器时,我收到了这个消息<代码>Intranet.Models.AddCustomerViewModel::EntityType“AddCustomerViewModel”未定义键。定义此EntityType的键。AddCustomerViewModel:EntityType:EntitySet“AddCustomerViewModel”基于未定义键的类型“AddCustomerViewModel”。如果要构建框架,请使用实体模型,然后更改为ViewModel并添加额外信息。将验证和其他注释添加到ViewModel。我不确定上面是什么。这听起来像一个视图模型,但看起来像一个实体模型。您可能应该有一个Customer类,其中包含员工和联系人的导航属性,但这是另一回事。实现此代码后,当我尝试构建控制器时,我收到了此消息<代码>Intranet.Models.AddCustomerViewModel::EntityType“AddCustomerViewModel”未定义键。定义此EntityType的键。AddCustomerViewModel:EntityType:EntitySet“AddCustomerViewModel”基于未定义键的类型“AddCustomerViewModel”。如果要构建框架,请使用实体模型,然后更改为ViewModel并添加额外信息。将验证和其他注释添加到ViewModel。我不确定上面是什么。这听起来像一个视图模型,但看起来像一个实体模型。您可能应该有一个带有员工和联系人导航属性的Customer类,但这是另一回事。