在一个视图中传递两个模型

时间:2016-05-05 07:37:58

标签: c# asp.net-mvc

我有两个db类,一个Task和第二个AssignedTasks,我想在管理员创建任务时在一个视图中使用它,然后他/她并行分配任务,尽管首先创建视图然后将任务分配给员工但是我没有得到如何做到这一点,因为我是asp.net的新手,任何人都可以通过示例代码帮助我吗?我的代码如下

  public partial class Task
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Task()
    {
        this.AssignedTasks = new HashSet<AssignedTask>();
    }

    public int TaskId { get; set; }
    public string TaskName { get; set; }
    public System.DateTime TaskDeadLine { get; set; }
    public int TaskNumber { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<AssignedTask> AssignedTasks { get; set; }
}

,分配任务的代码是

  public partial class AssignedTask
{
    public int AssignId { get; set; }
    public int AccountId { get; set; }
    public int TaskId { get; set; }

    public virtual Account Account { get; set; }
    public virtual Task Task { get; set; }
}

AssignedTask类具有task的foriegn键。

1 个答案:

答案 0 :(得分:2)

你应该为此创建一个ViewModel,它包含Task和AssignedTask对象,如下所示 -

public class TaskViewModel
{
    public Task Task { get; set; }
    public AssignedTask AssignedTask { get; set; }
}

然后将您的View与此视图模型绑定,例如TaskViewModel -

@model MyWebApplication2.Models.TaskViewModel
然后,您将能够像任何其他对象一样访问模型属性。例如,要为TaskName创建文本框,您可以执行 -

@Html.TextBoxFor(m=>m.Task.TaskName)