Передать данные в представление. Всегда через viewData? - PullRequest
1 голос
/ 24 августа 2009

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

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

Сколько систем в сети,

Последние действия.

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

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

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

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

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

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

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

Когда можно не передавать данные через viewdata в контроллер?

1 Ответ

2 голосов
/ 24 августа 2009

Вы должны использовать класс 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();
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...