2016-05-05 2 views
0

タスクと2番目のAssignedTasksという2つのdbクラスがあり、管理者がタスクを作成した後、最初にビューを作成したにもかかわらずタスクを並列に割り当てたときに、従業員にタスクを割り当てたが、私はasp.netで新しくなったので、どのようにそれを行うのか分からなかった。2つのモデルを1つのビューに渡す

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クラスは、タスクのforiegn鍵を持っています。

+1

あなたは*ビュー*のために必要とされるすべてのプロパティを持っている*ビューモデル*クラスを作成する必要があります。次に、2つのDBオブジェクトのすべての情報を*ビューモデル*にマップし、代わりに*その*をビューに渡します。これは*非常に*一般的な初心者のMVCの質問ですので、ビューモデルの周りをグーグルがコンセプトをより明確にする必要がある場合は、多くの良い情報を生成します。 –

+1

また、あなたが何をしているのか分からない限り、DBクラスをビューに直接渡すのを避けるべきです。POSTリクエストで誰もクラスのプロパティを簡単に変更できるので、脆弱性の扉を開きます。右側のフィールドにプロパティ名と一致するフォームを送信してください)。 –

+0

okこれはあなたの懸念に感謝しています:) –

答えて

2

次のようなタスクとAssignedTask両方のオブジェクトをラップしており、このためViewModelを作成する必要があります -

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

その後、例えばTaskViewModelすなわち、このビューモデルを使用してViewをバインド -

@model MyWebApplication2.Models.TaskViewModel 

あなたは他のオブジェクトと同じようにモデルプロパティにアクセスすることができます。例えばTaskNameのためのテキストボックスを作成するには、あなたができる -

@Html.TextBoxFor(m=>m.Task.TaskName) 
関連する問題