Мы используем аналогичную настройку, создавая несколько макетов, по одному для каждой роли.
Для примера скажем, у вас есть Счетная роль, чтобы вы создать макет страницу, которая ссылается на Accounting.css
файл и любые специальные файлы .js для этой роли
В верхней части этого макета использовать этот
@{
Layout = null;
}
И в вашем частичном виде _ViewStart.cshtml
поставить что-то вроде этого:
@{
if (User.IsInRole("Admin")) {
Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
else if(User.IsInRole("Accounting")) {
Layout = "~/Views/Shared/_AccountingLayout.cshtml";
}
else if(User.IsInRole("HR")) {
Layout = "~/Views/Shared/_HRLayout.cshtml";
}
else {
Layout = "~/Views/Shared/_Layout.cshtml";
}
}
Я поставил роль администратора на вершине, потому что в Admi n обычно имеет доступ ко всем другим ролям, то есть в моем случае использование администратора также относится ко всем другим ролям. Таким образом, установка в верхней части будет немедленно отфильтровывать всех пользователей, которые не являются администраторами, и проверять их конкретную роль, и любой администратор быстро получает макет администратора.