Заполнять ViewData при каждом действии, но не при отображении - PullRequest
2 голосов
/ 18 февраля 2012

У меня есть viewData, который должен быть доступен на каждой странице.Если я заполню это ViewData, используя onActionExecuting.Он заполняется для каждого действия, даже для результата действия частичных страниц.Я хочу, чтобы ViewData заполнялся только один раз для каждой загрузки страницы.Любое предложение

1 Ответ

2 голосов
/ 18 февраля 2012

Вы можете использовать событие OnActionExecuting и проверить, возвращен ли результат, если представление является обычным представлением или частичным представлением и на основании этого решает, добавлять ли информацию в ViewData или нет:

public class MyActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if (filterContext.Result is ViewResult)
        {
            filterContext.Controller.ViewData["foo"] = "bar";
        }
    }
}

Еще одна возможность сделать некоторые общие данные доступными для всех представлений - это передать их в отдельное дочернее действие и использовать помощник Html.Action , чтобы включить их, например, в макет.

...