Asp.net mvc 如何将ViewModel传递到索引视图?

Asp.net mvc 如何将ViewModel传递到索引视图?,asp.net-mvc,razor,viewmodel,Asp.net Mvc,Razor,Viewmodel,Im使用MVC5和EF6。 有一个viewModel,如下所示,我将其用于创建视图: public class LeadViewModel { public Leads _leads { get; set; } public Addresses _addresses { get; set; } public Phones _phones { get; set; } public Emails _emails { get; set; } public Se

Im使用MVC5和EF6。 有一个viewModel,如下所示,我将其用于创建视图:

public class LeadViewModel
{
    public Leads _leads { get; set; }
    public Addresses _addresses { get; set; }
    public Phones _phones { get; set; }
    public Emails _emails { get; set; }

    public SelectList EmployeesList { get; set; }
    public SelectList IndustryList { get; set; }
    public SelectList LeadSourceList { get; set; }
    public SelectList LeadStatusList { get; set; }

    public SelectList AddressTypeList { get; set; }
    public SelectList CityList { get; set; }

    public SelectList PhoneTypeList { get; set; }
}
现在我想把它的一些字段传递给索引视图。我该怎么做

以下是有关其他表的更多信息:

1-铅类:

public partial class Leads
{
    public Leads()
    {            
        this.LeadAddresses = new HashSet<LeadAddresses>();
        this.LeadContacts = new HashSet<LeadContacts>();
        this.LeadEmails = new HashSet<LeadEmails>();
        this.LeadPhones = new HashSet<LeadPhones>();
    }

    [Key]
    public int LeadID { get; set; }
    public string NamePrefix { get; set; }
    public string Title { get; set; }
    public string FirstName { get; set; }]
    public string LastName { get; set; }
    [NotMapped]       
    public string FullName { get { return NamePrefix + " " + FirstName + " " + LastName; } }
    public int EmployeeID { get; set; }
    public int LeadStatusID { get; set; }


    public virtual Employees Employees { get; set; }
    public virtual ICollection<LeadEmails> LeadEmails { get; set; }
    public virtual ICollection<LeadAddresses> LeadAddresses { get; set; }
    public virtual ICollection<LeadPhones> LeadPhones { get; set; }
    public virtual LeadStatus LeadStatus { get; set; }
}
在索引视图中,我只想显示:

Leads.FullName
Leads.Title
Leads.LeadStatus.Status
Leads.Employees.FullName
Leads.Phones.PhoneNo
Leads.Industries.Industry
我是否应该将viewModel从控制器传递到索引视图?如果是,怎么做?
我应该如何在索引视图中使用它?

为视图模型创建一个实例并将其传递给视图

    LeadViewModel model = new LeadViewModel();
    //Populate model
    return View(model);

为视图模型创建实例并将其传递给视图

    LeadViewModel model = new LeadViewModel();
    //Populate model
    return View(model);

除了Lead及其相关电话和电子邮件之外,您不需要任何额外信息,然后您可以直接从entity framework传递它:

public ActionResult SomeAction()
{
    IEnumerable<Leads> model = db.Leads.Include(i => i.LeadPhones).Include(n => n.LeadEmails);
    return View(model);
}
public ActionResult SomeAction()
{
IEnumerable model=db.Leads.Include(i=>i.LeadPhones)。Include(n=>n.leadEmail);
返回视图(模型);
}
他认为:

@model IEnumerable<Leads>

foreach(Leads lead in Model)
{
    foreach(Phones phone in lead.LeadPhones)
    {
        <div>@phone.PhoneNo</div>
    }

    foreach(LeadEmails email in lead.LeadEmail)
    {
        // similarly with emails
    }
}
@model IEnumerable
foreach(模型中的lead)
{
foreach(电话在lead中。LeadPhones)
{
@电话号码
}
foreach(LeadEmails以lead.LeadEmail的形式发送电子邮件)
{
//电子邮件也是如此
}
}

除了Lead及其相关电话和电子邮件之外,您不需要任何额外信息,然后您可以直接从entity framework传递它:

public ActionResult SomeAction()
{
    IEnumerable<Leads> model = db.Leads.Include(i => i.LeadPhones).Include(n => n.LeadEmails);
    return View(model);
}
public ActionResult SomeAction()
{
IEnumerable model=db.Leads.Include(i=>i.LeadPhones)。Include(n=>n.leadEmail);
返回视图(模型);
}
他认为:

@model IEnumerable<Leads>

foreach(Leads lead in Model)
{
    foreach(Phones phone in lead.LeadPhones)
    {
        <div>@phone.PhoneNo</div>
    }

    foreach(LeadEmails email in lead.LeadEmail)
    {
        // similarly with emails
    }
}
@model IEnumerable
foreach(模型中的lead)
{
foreach(电话在lead中。LeadPhones)
{
@电话号码
}
foreach(LeadEmails以lead.LeadEmail的形式发送电子邮件)
{
//电子邮件也是如此
}
}

所以。。。索引视图只需要一个潜在客户列表?为什么不通过一个IEnumerable呢?如果它还需要什么,只需创建另一个视图模型。Leads、LeadPhones和LeadEmail。我想创建另一个viewModel,但我不知道如何加载和传递viewModel以进行查看。看起来LeadPhone和LeadEmail已经通过导航属性(虚拟关键字)附加到Leads对象上了。@br4d:我想我没有解释清楚。有“引线”、“电话”表和“引线电话”连接表。现在我想在“Leads”表中显示lead的名称,在“Phones”表中显示lead的电话,它们在“LeadPhones”表中连接。是的,我理解。您可以按照我在下面的回答中的建议进行操作,也可以将它们展平到新的viewmodel中。无论哪种方法都有效,所以。。。索引视图只需要一个潜在客户列表?为什么不通过一个IEnumerable呢?如果它还需要什么,只需创建另一个视图模型。Leads、LeadPhones和LeadEmail。我想创建另一个viewModel,但我不知道如何加载和传递viewModel以进行查看。看起来LeadPhone和LeadEmail已经通过导航属性(虚拟关键字)附加到Leads对象上了。@br4d:我想我没有解释清楚。有“引线”、“电话”表和“引线电话”连接表。现在我想在“Leads”表中显示lead的名称,在“Phones”表中显示lead的电话,它们在“LeadPhones”表中连接。是的,我理解。您可以按照我在下面的回答中的建议进行操作,也可以将它们展平到新的viewmodel中。我的问题是“填充模型”部分。如何从数据库中填充viewModel?我的问题是“填充模型”部分。我应该如何从数据库填充viewModel?谢谢。我会试试这个,然后告诉你结果。我是MVC的新手,但这不管用。因为“LeadPhones”表中没有“PhoneNo”。“LeadPhones”只是一个连接表,只包含LeadID和PhoneID,而不包含PhoneNo。电话号码在“电话”表中。我不知道如何获取指定潜在客户的电话号码。谢谢。我会试试这个,然后告诉你结果。我是MVC的新手,但这不管用。因为“LeadPhones”表中没有“PhoneNo”。“LeadPhones”只是一个连接表,只包含LeadID和PhoneID,而不包含PhoneNo。电话号码在“电话”表中。我不知道如何获取指定潜在客户的电话号码。