gpt4 book ai didi

asp.net - MVC4 在单个 View 上显示多个部分 View 的问题

转载 作者:行者123 更新时间:2023-12-04 00:43:27 25 4
gpt4 key购买 nike

我一直在努力解决这个问题,但没有成功。使用 MVC4,我希望通过部分 View 在单个 View 上显示 3 个模型。单一 View 由 3 个部分 View (3 个数字列表)组成。我可以在 View 中显示一个模型,但无法弄清楚如何显示另外 2 个模型。

这是我的 View Controller :

[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());
}

这就是我作为 View 本身的模型(为了编译,我删除了不在 @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>

在每个部分 View 中,标题如下:

仪表板俱乐部

    @model IEnumerable<GMC.Models.Clubs>

仪表板成员

    @model IEnumerable<GMC.Models.MemberUsers>

仪表板警报

    @model IEnumerable<GMC.Models.Alerts>

现在我的问题是如何将三个数据库上下文传递到仪表板?我彻底困惑了,正在挣扎。

最佳答案

有很多方法可以做到这一点并使其通用,但它们大多都有一个 ViewModel。您专门创建的用于支持仪表板 View 的类:

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

如果这些只是数据库中的不同表,则应通过相同的上下文访问它们,因为上下文管理您的连接和其他资源。但是,如果没有看到该代码,我不会继续这样的切线。

[AllowAnonymous]
public ActionResult Dashboard()
{
//populate data into our view model(vm)
var vm = new DashboardViewModel{
Clubs = db.Clubs.ToList(),
MemberUsers = db.MemberUsers.ToList(),
Alerts = db.Alerts.ToList()
};
return View(vm);
}

仪表板 View :

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

就个人而言,我不会使用 Html.Partial,而是使用 Action/RenderAction,因为它们将允许您实际调用另一个返回 PartialViewResult 的操作,因此每个操作负责检索自己的数据。我并不总是这样做,但如果合适的话,那么 Action /部分 View 就更容易重用。

这看起来更像是这样:

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

...

仪表板.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>

关于asp.net - MVC4 在单个 View 上显示多个部分 View 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15888390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com