2017-06-02 41 views
3

我的应用程序有一个主要仪表板,由8个不同的部分视图组成;每个支持自己的视图模型和我的控制器我只是打电话在单个视图中组织多个ASP .Net MVC查看模型的最佳方式是什么?

public ActionResult mainDashboard(){ 
return View() 
} 

返回仪表板。我的问题是,是否会建议创建一个仪表板视图模型,该模型还包含对部分视图的视图模型的引用?在这种情况下什么被认为是推荐的最佳实践?

回答

3

Ohkk这里是一个好主意,以及使用html.Action,而不是html.partial

这看起来更像是这样的:

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; } 
} 

然后,在仪表板的操作方法,你会填充每个列表:

myModel.Users = db.MemberUsers.ToList(); 

... 你会那么需要更新的观点在这方面采取新的视图模型

@model DashboardViewModel 

最后,从视图中,您需要在数据传递给每个部分:

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

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

谢谢!非常好的答案! – LifeOf0sAnd1s

+0

很高兴它有助于快乐编码:) – Curiousdev

相关问题