MVC:在视图中使用2个模型

时间:2014-04-17 06:27:00

标签: asp.net-mvc razor

我的数据库中有2个表,即公司和分支。所以,理想情况下,公司可以拥有多个分支。使用实体框架我已经为两者添加了模型类。在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; }
    }
}

创建视图:

@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>

1 个答案:

答案 0 :(得分:1)

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

例如:

假设您想在视图中使用2个模型,即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将具有ModelA和ModelB的列表,并且它具有自己的属性,并且可以在单个视图中使用。