Возможно, вы могли бы сохранить состояние администратора в переменной сеанса или что-то в этом роде, но более уместным было бы создать частичное представление с меню (если вы этого еще не сделали) и просто поставить там чек. Вы по-прежнему будете вызывать ее из базы данных при каждом запросе страницы, но без дублирования кода. И если у вас сейчас нет проблем с производительностью, один дополнительный звонок на самом деле не так уж и сложен.
Если у вас есть проблемы с производительностью, убедитесь, что вы оптимизируете свой собственный код, имеете все правильные индексы в БД и т. Д. Большую прибавку в производительности (особенно в проблемах, связанных с БД) обычно можно получить путем реструктуризации как все сделано, вместо что сделано.
UPDATE:
В ASP.NET MVC 2 на самом деле есть еще лучший способ сделать это, комбинируя Html.RenderAction()
и AuthorizeAttribute
(или, возможно, написать свой собственный унаследованный атрибут, который устанавливает флаг вместо возврата ошибки, когда пользователь не авторизован) , Таким образом вы минимизируете логику представления и будете лучше соответствовать принципам MVC.