2009-08-24 2 views
1

Я создаю приложение, которое контролирует другие системы. Теперь я хочу реализовать частичный вид, User Control, называемый «статус». Этот контроль должен отображать информацию о состоянии о application.Like:Передайте данные на просмотр. Всегда через viewData?

пользователь вошел в систему,

Как много систем онлайн,

Активности.

Этот частичный вид представляется практически во всех других видах. Как передать эту информацию в представление?

Я не хочу писать

Wiewdata[“SystemsOnline”] = Helpers.CountSystemsOnline() 
Wiewdata[“SystemLatestActivity”] = ……………… 

во всех своих действиях.

Могу ли я написать что-то вроде Html.RenderPartial (../ Shared/Status), что кулак переходит к действию, которое добавляет данные viewdata?

Или я могу получить доступ к информации непосредственно в представлении через механизм hepler?

Я заметил, что defult LogOnUserControl view использует Page.User.Identity.Name для прямого доступа к этим данным.

Когда это нормально, чтобы не передавать данные в виде данных в контроллере?

ответ

2

Для этой цели вы должны использовать класс ViewData. Я не рекомендую придумать трюки.

Но вам не нужно вручную передать те же данные из каждые действий. Просто сделайте это в своем базовом контроллере:

protected override void OnActionExecuted(ActionExecutedContext context) { 
    base.OnActionExecuted(context); 
    if (context.Result is ViewResult) { 
     // Pass the systems online to all views 
     ViewData[“SystemsOnline”] = Helpers.CountSystemsOnline(); 
    } 
} 

Только несколько строк кода, и вы делаете его доступным во всем мире.

Смежные вопросы