2017-07-31 22 views
1

私は "リンク"モデルを持っています。.NET Core MVC ViewModel

public class Link 
{ 
    public int ID { get; set; } 
    public string Name { get; set; }   
    public string Project { get; set; } 
} 

私は別のデータベーステーブルにプロジェクトを保存し、このモデルに何らかの形でリンクし、ドロップダウンリストにオプションを設定したいと考えています。 私はViewModelを使用する必要があると思いますが、私は何をする必要があるのか​​分かりません。

public class Project 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

"Project"という新しいモデルを作成し、その2つを組み合わせたViewModelを作成する必要があると思います。

ViewModel用に別のコントローラを作成する必要がありますか、またはそれを「リンク」コントローラ内で使用できますか?

+0

のためのMVC足場コントローラとビューをちょうどこの

public class Link { [Key] public int LinkId { get; set; } public string LinkName { get; set; } public int ProjectId { get; set; } public virtual Project projects { get; set; } } public class Project { [Key] public int ProjectId { get; set; } public string ProjectName { get; set; } public virtual ICollection<Link> links { get; set; } } 

を試し行うことができます。 Projectを別のデータベースに保存しますか?はいの場合、なぜですか?技術的要件ですか? ところで、あなたは 'Link'と' Project'の間に外部キーを使ってリンクを張るべきです。 このチュートリアルは、https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/でご覧になれます。それはあなたの役に立つかもしれません。 – Atlasmaybe

+0

プロジェクトは一意で、別のテーブルに格納する必要があります。新しいリンクを追加すると、別個のプロジェクトがドロップダウンリストに選択項目として表示されます。 – levis84

+0

"プロジェクト"テーブルにあるレコードでドロップダウンリストを作成する必要があります。これを行うにはデータアクセスレイヤーが必要ですか? - これを取得したら、プロジェクトのIDを「リンク」レコードに格納して参照します。 –

答えて

3

私があなたに合ったら、Linkクラスからプロジェクトのリストにアクセスしたいと思っています。そして私はあなたがMVCを使用していると信じています。それはあなたが何をしたいのかである場合、あなたはあなたのリンククラス

public class Link 
{ 
    public int ID { get; set; } 
    public string Name { get; set; }   
    public int ProjectID { get; set; } 
    public virtual Project Project {get: set;} 
} 

をでこれを行うと、あなたが今あなたがあなたのコントローラクラスを生成するときに、この

public class Project 
{ 
    public int ProjectID { get; set; } 
    public string Name { get; set; } 
} 

として、プロジェクトのクラスを定義することができますですることができますリンクこの

ViewBag.ProjectID = new SelectList(db.Projects, "ProjectID", "Name", list.ProjectID); 

のようなものを取得し、あなたのビューがこの

のようになります。

希望は、これは

+0

はいこれは良いようです、私はそれを試してみましょう。ただ1つの質問で、どこでもViewModelがこのシナリオの良い練習であることを示唆しているようです。本当ですか? – levis84

+0

はい、それは本当です。 ViewModelsを使用すると、1つまたは複数のデータモデルまたはソースの複数のエンティティを、ビューで消費およびレンダリング用に最適化された単一のオブジェクトに整形できます。あなたはここでそれについて多くを得ることができます:http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp-net-mvc-applications/ –

1

質問が明確ではありませんどちらのクラス

+1

この回答は動作しますが、私はViewBagの説明のために上記の投稿を答えとして与えました。ありがとう – levis84

関連する問題