Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net MVC4在单个视图上显示多个局部视图的问题_Asp.net_Asp.net Mvc_Razor_Asp.net Mvc 4 - Fatal编程技术网

Asp.net MVC4在单个视图上显示多个局部视图的问题

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

我一直在努力解决这个问题,但毫无结果。使用MVC4,我有3个模型希望通过局部视图在单个视图上显示。单个视图由3个局部视图(3个数字列表表)组成。我可以在视图中显示一个模型,但不知道如何显示其他两个模型

以下是我为视图控制器准备的内容:

[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>