Asp.net MVC4在单个视图上显示多个局部视图的问题
我一直在努力解决这个问题,但毫无结果。使用MVC4,我有3个模型希望通过局部视图在单个视图上显示。单个视图由3个局部视图(3个数字列表表)组成。我可以在视图中显示一个模型,但不知道如何显示其他两个模型 以下是我为视图控制器准备的内容:Asp.net MVC4在单个视图上显示多个局部视图的问题,asp.net,asp.net-mvc,razor,asp.net-mvc-4,Asp.net,Asp.net Mvc,Razor,Asp.net Mvc 4,我一直在努力解决这个问题,但毫无结果。使用MVC4,我有3个模型希望通过局部视图在单个视图上显示。单个视图由3个局部视图(3个数字列表表)组成。我可以在视图中显示一个模型,但不知道如何显示其他两个模型 以下是我为视图控制器准备的内容: [AllowAnonymous] public ActionResult Dashboard() { //Database.SetInitializer<AlertsContext>(null); Dat
[AllowAnonymous]
public ActionResult Dashboard()
{
//Database.SetInitializer<AlertsContext>(null);
Database.SetInitializer<MemberUsersContext>(null);
//Database.SetInitializer<ClubsContext>(null);
//AlertsContext db = new AlertsContext();
MemberUsersContext db = new MemberUsersContext();
//ClubsContext db = new ClubsContext();
//db.MemberUsers.ToList()
return View(db.MemberUsers.ToList());
}
[AllowAnonymous]
公共操作结果仪表板()
{
//Database.SetInitializer(null);
Database.SetInitializer(null);
//Database.SetInitializer(null);
//AlertsContext db=新的AlertsContext();
MemberUsersContext db=新的MemberUsersContext();
//clubContext db=新的clubContext();
//db.MemberUsers.ToList()
返回视图(db.MemberUsers.ToList());
}
这是视图本身的模型(为了编译,我删除了@model IENumerable语句下没有的两个:
@model IEnumerable<GMC.Models.MemberUsers>
<div class="dashboard_alerts">
@Html.Partial("DashboardAlerts")
</div>
<div class="dashboard_pending_clubs">
@Html.Partial("DashboardClubs")
</div>
<div class="dashboard_verified_members">
@Html.Partial("DashboardMembers")
</div>
@model IEnumerable
@Html.Partial(“仪表板警报”)
@Html.Partial(“仪表盘俱乐部”)
@Html.Partial(“仪表板成员”)
在每个局部视图中,标题如下所示:
仪表盘俱乐部
@model IEnumerable<GMC.Models.Clubs>
@model IEnumerable
仪表板成员
@model IEnumerable<GMC.Models.MemberUsers>
@model IEnumerable
仪表板警报
@model IEnumerable<GMC.Models.Alerts>
@model IEnumerable
现在,我的问题是如何将这三个数据库上下文传递到仪表板中?我完全搞不清楚,而且很挣扎。您需要为仪表板页面创建一个特定的ViewModel
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
@model DashboardViewModel
最后,在视图中,您需要将数据传递给每个部分:
@Html.Partial("DashboardAlerts", Model.Alerts)
@Html.Partial("DashboardClubs", Model.Clubs)
有很多方法可以做到这一点并使其通用化,但它们大多都有一个ViewModel。您专门创建一个类来支持仪表板视图:
public class DashboardViewModel {
public IEnumerable<GMC.Models.Clubs> Clubs {get;set;}
public IEnumerable<GMC.Models.MemberUsers> MemberUsers {get;set;}
public IEnumerable<GMC.Models.Alerts> Alerts {get;set;}
}
@model DashboardViewModel
<div class="dashboard_alerts">
@Html.Partial("DashboardAlerts", Model.Alerts)
</div>
<div class="dashboard_pending_clubs">
@Html.Partial("DashboardClubs", Model.Clubs)
</div>
<div class="dashboard_verified_members">
@Html.Partial("DashboardMembers", Model.MemberUsers)
</div>
仪表板视图:
public class DashboardViewModel {
public IEnumerable<GMC.Models.Clubs> Clubs {get;set;}
public IEnumerable<GMC.Models.MemberUsers> MemberUsers {get;set;}
public IEnumerable<GMC.Models.Alerts> Alerts {get;set;}
}
@model DashboardViewModel
<div class="dashboard_alerts">
@Html.Partial("DashboardAlerts", Model.Alerts)
</div>
<div class="dashboard_pending_clubs">
@Html.Partial("DashboardClubs", Model.Clubs)
</div>
<div class="dashboard_verified_members">
@Html.Partial("DashboardMembers", Model.MemberUsers)
</div>
Dashboard.cshtml
<div class="dashboard_alerts">
@Html.Action("Alerts")
</div>
<div class="dashboard_pending_clubs">
@Html.Action("Clubs")
</div>
<div class="dashboard_verified_members">
@Html.Action("Members")
</div>
@Html.Action(“警报”)
@Html.行动(“俱乐部”)
@Html.行动(“成员”)
你的两个答案似乎都有效,但我选择了第二条路线。非常干净,非常棒。+100如果可以的话。与渲染部分和局部相比,动作到底有什么作用?我应该知道这一点。但是ASP.NET MVC4对我来说相对较新。@AmitApollo.Partial()将直接使用Clubs.cshtml,因此您必须像我在第二个参数中所做的那样将模型数据传递给它。.Action()将调用一个Action方法,该操作可以执行任何需要的操作来查询数据并将其传递给return Partial(myDataHere)
。这也行得通。我刚使用了AaronLS的第二个解决方案,但不管怎样+1。
<div class="dashboard_alerts">
@Html.Action("Alerts")
</div>
<div class="dashboard_pending_clubs">
@Html.Action("Clubs")
</div>
<div class="dashboard_verified_members">
@Html.Action("Members")
</div>