嵌套实体的绑定属性

时间:2017-04-03 13:13:50

标签: c# asp.net-mvc asp.net-mvc-5

我有一个包含我的实体的视图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)
{

}

但那个dosn不起作用。是否有MVC的功能可以执行此操作,还是必须向视图模型显式添加属性,然后将其自身映射到控制器中的嵌套实体?

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情:

id_list = Post.objects.values_list('category_id').distinct()
catgories = Category.objects.filter(id__in=id_list)