Одним из возможных решений этого является преобразование контрольных точек в атрибуты вида в действиях вашего контроллера (возможно, это те же самые вещи, хотя, из вашего вопроса это не ясно). Идея состоит в том, что ваша контрольная точка будет преобразовываться в значимые направления просмотра, такие как «AllowEdit», «AllowSave», «AllowDetailedView» и т. Д. Они станут записями в ViewData.
Используйте базовый класс контроллера для расширения Controller и предоставления ему коллекции ControlPoint. Пусть ваш фильтр заполнит эту коллекцию в контроллере. Пусть метод OnActionExecuted базового контроллера использует эту коллекцию и, в случае ViewResult, заполняет ViewData соответствующими значениями для коллекции директив представления. Отдельные действия контроллера также могут использовать коллекцию ControlPoint, чтобы определить, нужно ли им предоставлять данные для отдельных представлений на основе того, будет ли представление отображать дополнительные данные.
По вашему мнению, полагайтесь не на сами контрольные точки, а на направления обзора, определенные базовым контроллером. Таким образом, вы отделили представления от логики контрольной точки. Представления работают только с данными представления, имеющими смысл для представления, а не с данными на основе разрешений, которые имеют значение в контексте приложения. Представление не заботится о том, как или почему установлена конкретная директива, ему нужно только правильно отобразить, основываясь на значении директивы.