2017-04-03 162 views
0

我有一个包装我的实体的视图odel。它看起来像这样:嵌套实体的绑定属性

public class EmailTemplateViewModel 
{ 
    public List<EmailAccount> EmailAccounts { get; set; } 
    public EmailTemplate EmailTemplate { get; set; } 

    [Display(Name = "Email Account")] 
    public int EmailAccountId { get; set; } 

} 

,我要保存在回发实体是EmailTemplateEmailAccount嵌套在EmailTemplate之内,但我使用这种视图模型,所以我可以构建一个下拉列表以供用户选择(因为它不相关,我删除了该代码)。

在我的控制器,以获取电子邮件模板,我喜欢这种结合:

public ActionResult Edit([Bind(Include = "EmailAccountId, EmailTemplate")] EmailTemplateViewModel emailTemplateViewModel) 
{ 

} 

通过defualt这个结合的EmailTenplate每个属性。如果我不希望有问题的视图能够插入某些属性,有没有办法指定嵌套模板上的某些属性进行绑定?

我想:

public ActionResult Edit([Bind(Include = "EmailAccountId, EmailTemplate.Property1, EmailTemplate.Property2")] EmailTemplateViewModel emailTemplateViewModel) 
{ 

} 

但这不到风度的工作。有没有这样做的MVC功能,或者我必须显式添加属性到视图模型,然后将它们映射到控制器中的嵌套实体?

回答

0

你可以尝试这样的事:

[Bind(Exclude="EmailAccounts")] 
public class EmailTemplateViewModel 
{ 
    public List<EmailAccount> EmailAccounts { get; set; } 
    public EmailTemplate EmailTemplate { get; set; } 
    [Display(Name = "Email Account")] 
    public int EmailAccountId { get; set; } 
} 

[Bind(Exclude="Property1,Property2")] 
public class EmailTemplate 
{ 
    public string Property1 {get;set;} 
    public string Property2 {get;set;} 
    public string Property3 {get;set;} 
}