2010-09-12 2 views
0

Привет, я не знаю, как использовать два разных контроллера одновременно и передавать данные на один вид? Я имею в виду, что у меня есть BlogController и StatisticsController. Статистика среди прочего показывает, сколько людей в сети, и я хотел, чтобы эти данные были на главной странице моего блога. Я могу видеть два способа, которыми он мог бы работать: -создать некоторый ContainerController и создать объекты BlogController и StatisticsController и там манипулировать обоими методами -создать объект StatisticsController в BlogController , но я не уверен в этих решениях. Есть рекомендации?Два контроллера одновременно?

ответ

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 заключается в том, что если статистика требует определенного репозитория, было бы лучше пройти через контроллер.