Asp.net mvc MVC:在视图中使用两个模型

Asp.net mvc MVC:在视图中使用两个模型,asp.net-mvc,razor,Asp.net Mvc,Razor,我的数据库中有两个表,即Company和Branchs。因此,理想情况下,一个公司可以有多个分支机构。使用entity framework,我为这两个表添加了模型类。在Create Company的视图页面中,我有一节介绍了如何向特定公司添加多个分支机构。具体来说,它有一个用于添加一个分支的div。之后,有一个用于添加更多分支的链接。当用户单击该链接时,将打开一个类似的div。我如何才能完成相同的任务 模型类: namespace Models { using System; u

我的数据库中有两个表,即Company和Branchs。因此,理想情况下,一个公司可以有多个分支机构。使用entity framework,我为这两个表添加了模型类。在Create Company的视图页面中,我有一节介绍了如何向特定公司添加多个分支机构。具体来说,它有一个用于添加一个分支的div。之后,有一个用于添加更多分支的链接。当用户单击该链接时,将打开一个类似的div。我如何才能完成相同的任务

模型类:

namespace Models
{
    using System;
    using System.Collections.Generic;

    public partial class Company
    {
        public Company()
        {
            this.Branches = new HashSet<Branches>();
        }

        public long ID { get; set; }
        public string Name { get; set; }
        public string QuickInfo { get; set; }

    public virtual ICollection<Branches> Branches { get; set; }
    }
}
命名空间模型
{
使用制度;
使用System.Collections.Generic;
公共部分类公司
{
上市公司()
{
this.branchs=newhashset();
}
公共长ID{get;set;}
公共字符串名称{get;set;}
公共字符串QuickInfo{get;set;}
公共虚拟ICollection分支{get;set;}
}
}
创建视图:

@model Models.Company

 @using (Html.BeginForm("Create", "Company"))
                    {  
@Html.TextBoxFor(x=>x.Name,null)
@Html.TextBoxFor(x=>x.QuickInfo,null)
}
<div>
<a href="#" >Add Branch</a>
                        <h3>Branch</h3>
@Html.TextAreaFor(x=>x.Branches.Add() /*what to do here*/
</div>
@model Models.Company
@使用(Html.BeginForm(“创建”、“公司”))
{  
@TextBoxFor(x=>x.Name,null)
@Html.TextBoxFor(x=>x.QuickInfo,null)
}
分支机构
@Html.TextAreaFor(x=>x.branchs.Add()/*在这里做什么*/

您可以使用
ViewModel
在一个视图中使用多个模型

例如:

假设您希望在视图中使用两个模型,即ModelA和ModelB

ModelA
{
     public int PropA { get; set; } 
     public int PropB { get; set; } 
}

ModelB
{
     public int PropC { get; set; } 
     public int PropD { get; set; } 
}
现在,要在单个视图中使用这两个模型,可以创建单个ViewModel

例如

ModelC
{
     public int PropX { get; set; } 
     public int PropY { get; set; } 
     public List<ModelA> ListOfModelA { get; set; }
     public List<ModelB> ListofModelB { get; set; }
}
ModelC
{
公共int PropX{get;set;}
公共int属性{get;set;}
模型的公共列表列表{get;set;}
公共列表ListofModelB{get;set;}
}

因此,现在您的ModelC将有ModelA和ModelB的列表,并且它有自己的属性,可以在单个视图中使用。

堆栈溢出不太适合于非常开放式的“我该怎么做?”没有大量信息的问题,你没有提供。尽可能多地努力提问,就像你希望有人回答一样。给我们图表、代码、尝试的解决方案等等,帮助我们帮助你。提供不完整的或伪代码非常有用,这样我们可以看到你的思维过程。