Вы можете использовать событие OnActionExecuting и проверить, возвращен ли результат, если представление является обычным представлением или частичным представлением и на основании этого решает, добавлять ли информацию в ViewData или нет:
public class MyActionFilter : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.Result is ViewResult)
{
filterContext.Controller.ViewData["foo"] = "bar";
}
}
}
Еще одна возможность сделать некоторые общие данные доступными для всех представлений - это передать их в отдельное дочернее действие и использовать помощник Html.Action , чтобы включить их, например, в макет.