Вы можете сделать это довольно легко в базовом классе контроллера или в фильтре действий, который применяется к контроллерам / действиям. В любом случае вы получаете возможность прикоснуться к запросу до (или после) действия - так что вы можете добавить эту функцию туда.
Например:
public class UserInfoAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(
ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
filterContext.Controller.ViewData["user"] = "Foo";
}
}
...
[HandleError, UserInfo]
public class HomeController : Controller
{...}
(также может использоваться на уровне действия (метод))
или с общим базовым классом:
public abstract class ControllerBase : Controller
{
protected override void OnActionExecuting(
ActionExecutingContext filterContext)
{
ViewData["user"] = "Bar";
base.OnActionExecuting(filterContext);
}
}
[HandleError]
public class HomeController : ControllerBase
{...}