2017-06-02 7 views
3

私のアプリには8つの部分ビューからなるメインダッシュボードがあります。それぞれ独自のビューモデルとコントローラでバックアップされています。複数のASP .Net MVC Viewモデルを1つのビューで整理するにはどうすればよいでしょうか?

public ActionResult mainDashboard(){ 
return View() 
} 

ダッシュボードを返すだけです。私の質問は、部分ビューのビューモデルへの参照を含むダッシュボードビューモデルを作成することをお勧めしますか?この状況で推奨されるベストプラクティスは何と考えられますか?ここ

答えて

3

Ohkkが同様に代わりhtml.partial

html.Actionを使用することをお勧めしますこれは、より次のようになります。

public ActionResult Dashboard() 
{ 
    return View(); 
} 

public PartialViewResult Clubs() 
{ 
    .... 
    return PartialView(db.Clubs.ToList());//this assumes the partial view is named Clubs.cshtml, otherwise you'll need to use the overload where you pass the view name 
} 

public PartialViewResult Alerts() 
{ 
    .... 
    return PartialView(db.Alerts.ToList()); 
} 

Dashboard.cshtml

<div class="dashboard_alerts">  
    @Html.Action("Alerts") 

<div class="dashboard_pending_clubs">  
    @Html.Action("Clubs") 
</div> 

<div class="dashboard_verified_members">  
    @Html.Action("Members") 
</div> 

OR

あなたは正確にこれは

public class DashboardViewModel 
{ 
    public IEnumerable<GMC.Models.Clubs> Clubs { get; set; } 
    public IEnumerable<GMC.Models.MemberUsers> Users { get; set; } 
    public IEnumerable<GMC.Models.Alerts> Alerts { get; set; } 
} 

、より効率的な方法だろうダッシュボードページのビューモデルの特定を作成する必要があります次に、ダッシュボードアクションメソッドでは、あなたは、各リストを移入します:

あなたは、この新しいViewModelに

に取るようにビューを更新する必要があるでしょう
myModel.Users = db.MemberUsers.ToList(); 

...

@model DashboardViewModel 

最後に、ビューの中から、あなたは、各部分にデータを渡す必要があります:

@Html.Partial("DashboardAlerts", Model.Alerts) 

@Html.Partial("DashboardClubs", Model.Clubs) 
+1

ありがとうございました!答えは非常に優れています! – LifeOf0sAnd1s

+0

喜んでそれは幸せなコーディングを支援:) – Curiousdev

関連する問題