两个控制器一次?

时间:2010-09-12 19:43:56

标签: asp.net-mvc-2

您好我不知道如何同时使用两个不同的控制器并将数据传递到一个视图?我的意思是我有BlogController和StatisticsController。统计数据显示有多少人在线,我想这些数据将在我博客的主页上。 我可以看到两种可行的方法: - 创建一些ContainerController并创建BlogController和StatisticsController的对象,并在那里操纵这两种方法 - 在BlogController中创建StatisticsController的对象 但我不确定这些解决方案。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你的问题非常不清楚。根据我的理解,你有一个控制器动作返回一个视图,需要在屏幕的一部分上包含一些信息。可通过返回部分视图的另一个控制器操作访问此信息。如果是这种情况,则Html.RenderAction助手可能正是您所寻找的。

public class BlogController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

public class StatisticsController : Controller
{
    [ChildActionOnly]
    public ActionResult Index()
    {
        return PartialView();
    }
}

在博客控制器的索引视图中包含统计信息:

<%= Html.RenderAction("Index", "Statistics") %>

可以实现同样的目的,包括直接部分视图而无需通过控制器:

<%= Html.RenderPartial("~/views/statistics/index.ascx") %>

但RenderAction的优点是,如果统计数据需要一些特定的存储库,那么通过控制器会更好。