2010-09-12 204 views
0

嗨,我不知道如何在同一時間使用兩個不同的控制器,並將數據傳遞到一個視圖?我的意思是我有我的BlogController和StatisticsController。除此之外,統計數據顯示有多少人在線,我想將這些數據放在我博客的主頁上。 我可以看到它可以工作的兩種方式: - 創建一些ContainerController並創建BlogController和StatisticsController的對象,並在那裏操作兩種方法 - 在BlogController中創建StatisticsController的對象 但我不確定這些解決方案。有任何建議嗎?兩個控制器一次?

回答

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的優點是,如果統計信息需要某個特定的存儲庫,則最好通過控制器。